@zzzen/pyright-internal 1.2.0-dev.20240324 → 1.2.0-dev.20240407

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/dist/analyzer/analyzerFileInfo.d.ts +0 -1
  2. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  3. package/dist/analyzer/binder.js +15 -8
  4. package/dist/analyzer/binder.js.map +1 -1
  5. package/dist/analyzer/cacheManager.d.ts +12 -0
  6. package/dist/analyzer/cacheManager.js +63 -3
  7. package/dist/analyzer/cacheManager.js.map +1 -1
  8. package/dist/analyzer/checker.d.ts +2 -3
  9. package/dist/analyzer/checker.js +18 -13
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/codeFlowEngine.js +14 -2
  12. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  13. package/dist/analyzer/codeFlowTypes.d.ts +1 -0
  14. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  15. package/dist/analyzer/constraintSolver.js +20 -3
  16. package/dist/analyzer/constraintSolver.js.map +1 -1
  17. package/dist/analyzer/constructorTransform.js +2 -2
  18. package/dist/analyzer/constructorTransform.js.map +1 -1
  19. package/dist/analyzer/constructors.d.ts +3 -2
  20. package/dist/analyzer/constructors.js +76 -54
  21. package/dist/analyzer/constructors.js.map +1 -1
  22. package/dist/analyzer/dataClasses.js +7 -6
  23. package/dist/analyzer/dataClasses.js.map +1 -1
  24. package/dist/analyzer/declaration.js +1 -1
  25. package/dist/analyzer/declaration.js.map +1 -1
  26. package/dist/analyzer/enums.js +8 -3
  27. package/dist/analyzer/enums.js.map +1 -1
  28. package/dist/analyzer/functionTransform.js +1 -1
  29. package/dist/analyzer/functionTransform.js.map +1 -1
  30. package/dist/analyzer/importResolver.js +19 -17
  31. package/dist/analyzer/importResolver.js.map +1 -1
  32. package/dist/analyzer/importStatementUtils.d.ts +6 -6
  33. package/dist/analyzer/importStatementUtils.js +42 -42
  34. package/dist/analyzer/importStatementUtils.js.map +1 -1
  35. package/dist/analyzer/namedTuples.js +3 -1
  36. package/dist/analyzer/namedTuples.js.map +1 -1
  37. package/dist/analyzer/packageTypeVerifier.js +7 -7
  38. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  39. package/dist/analyzer/parseTreeUtils.d.ts +6 -5
  40. package/dist/analyzer/parseTreeUtils.js +12 -13
  41. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  42. package/dist/analyzer/patternMatching.js +15 -4
  43. package/dist/analyzer/patternMatching.js.map +1 -1
  44. package/dist/analyzer/program.d.ts +5 -10
  45. package/dist/analyzer/program.js +35 -30
  46. package/dist/analyzer/program.js.map +1 -1
  47. package/dist/analyzer/programTypes.d.ts +11 -0
  48. package/dist/analyzer/programTypes.js +11 -0
  49. package/dist/analyzer/programTypes.js.map +1 -0
  50. package/dist/analyzer/properties.js +10 -10
  51. package/dist/analyzer/properties.js.map +1 -1
  52. package/dist/analyzer/protocols.js +5 -5
  53. package/dist/analyzer/protocols.js.map +1 -1
  54. package/dist/analyzer/service.d.ts +3 -2
  55. package/dist/analyzer/service.js +24 -15
  56. package/dist/analyzer/service.js.map +1 -1
  57. package/dist/analyzer/sourceFile.d.ts +5 -3
  58. package/dist/analyzer/sourceFile.js +112 -75
  59. package/dist/analyzer/sourceFile.js.map +1 -1
  60. package/dist/analyzer/sourceFileInfoUtils.js +4 -4
  61. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  62. package/dist/analyzer/sourceMapper.js +6 -6
  63. package/dist/analyzer/symbol.d.ts +4 -1
  64. package/dist/analyzer/symbol.js +10 -0
  65. package/dist/analyzer/symbol.js.map +1 -1
  66. package/dist/analyzer/symbolUtils.d.ts +1 -0
  67. package/dist/analyzer/symbolUtils.js +11 -1
  68. package/dist/analyzer/symbolUtils.js.map +1 -1
  69. package/dist/analyzer/tracePrinter.js +2 -2
  70. package/dist/analyzer/tracePrinter.js.map +1 -1
  71. package/dist/analyzer/typeDocStringUtils.js +1 -1
  72. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  73. package/dist/analyzer/typeEvaluator.js +159 -73
  74. package/dist/analyzer/typeEvaluator.js.map +1 -1
  75. package/dist/analyzer/typeGuards.js +16 -9
  76. package/dist/analyzer/typeGuards.js.map +1 -1
  77. package/dist/analyzer/typeStubWriter.js +1 -1
  78. package/dist/analyzer/typeStubWriter.js.map +1 -1
  79. package/dist/analyzer/typeUtils.d.ts +2 -2
  80. package/dist/analyzer/typeUtils.js +33 -20
  81. package/dist/analyzer/typeUtils.js.map +1 -1
  82. package/dist/analyzer/typedDicts.js +32 -20
  83. package/dist/analyzer/typedDicts.js.map +1 -1
  84. package/dist/analyzer/types.d.ts +5 -1
  85. package/dist/analyzer/types.js +20 -0
  86. package/dist/analyzer/types.js.map +1 -1
  87. package/dist/backgroundAnalysis.d.ts +1 -0
  88. package/dist/backgroundAnalysis.js +6 -2
  89. package/dist/backgroundAnalysis.js.map +1 -1
  90. package/dist/backgroundAnalysisBase.d.ts +2 -1
  91. package/dist/backgroundAnalysisBase.js +6 -1
  92. package/dist/backgroundAnalysisBase.js.map +1 -1
  93. package/dist/backgroundThreadBase.d.ts +1 -0
  94. package/dist/backgroundThreadBase.js +19 -10
  95. package/dist/backgroundThreadBase.js.map +1 -1
  96. package/dist/commands/commandController.d.ts +2 -1
  97. package/dist/commands/commandController.js +3 -0
  98. package/dist/commands/commandController.js.map +1 -1
  99. package/dist/commands/createTypeStub.d.ts +1 -1
  100. package/dist/commands/createTypeStub.js +3 -3
  101. package/dist/commands/createTypeStub.js.map +1 -1
  102. package/dist/commands/dumpFileDebugInfoCommand.d.ts +1 -1
  103. package/dist/commands/dumpFileDebugInfoCommand.js +5 -5
  104. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  105. package/dist/commands/quickActionCommand.d.ts +1 -1
  106. package/dist/commands/quickActionCommand.js +2 -2
  107. package/dist/commands/quickActionCommand.js.map +1 -1
  108. package/dist/commands/restartServer.d.ts +1 -1
  109. package/dist/common/cancellationUtils.js +2 -2
  110. package/dist/common/cancellationUtils.js.map +1 -1
  111. package/dist/common/caseSensitivityDetector.d.ts +6 -0
  112. package/dist/common/caseSensitivityDetector.js +18 -0
  113. package/dist/common/caseSensitivityDetector.js.map +1 -0
  114. package/dist/common/commandLineOptions.d.ts +3 -2
  115. package/dist/common/commandLineOptions.js.map +1 -1
  116. package/dist/common/commandUtils.js +1 -1
  117. package/dist/common/commandUtils.js.map +1 -1
  118. package/dist/common/configOptions.js +3 -3
  119. package/dist/common/configOptions.js.map +1 -1
  120. package/dist/common/envVarUtils.d.ts +1 -0
  121. package/dist/common/envVarUtils.js +42 -7
  122. package/dist/common/envVarUtils.js.map +1 -1
  123. package/dist/common/extensibility.d.ts +4 -3
  124. package/dist/common/extensibility.js.map +1 -1
  125. package/dist/common/fileBasedCancellationUtils.js +2 -2
  126. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  127. package/dist/common/fileSystem.d.ts +0 -1
  128. package/dist/common/fileSystem.js.map +1 -1
  129. package/dist/common/fullAccessHost.js +4 -3
  130. package/dist/common/fullAccessHost.js.map +1 -1
  131. package/dist/common/languageServerInterface.d.ts +62 -0
  132. package/dist/common/languageServerInterface.js +10 -0
  133. package/dist/common/languageServerInterface.js.map +1 -0
  134. package/dist/common/realFileSystem.d.ts +8 -4
  135. package/dist/common/realFileSystem.js +56 -17
  136. package/dist/common/realFileSystem.js.map +1 -1
  137. package/dist/common/serviceKeys.d.ts +21 -0
  138. package/dist/common/serviceKeys.js +26 -0
  139. package/dist/common/serviceKeys.js.map +1 -0
  140. package/dist/common/serviceProviderExtensions.d.ts +3 -15
  141. package/dist/common/serviceProviderExtensions.js +23 -27
  142. package/dist/common/serviceProviderExtensions.js.map +1 -1
  143. package/dist/common/textEditTracker.d.ts +5 -5
  144. package/dist/common/textEditTracker.js +35 -35
  145. package/dist/common/textEditTracker.js.map +1 -1
  146. package/dist/common/uri/constantUri.d.ts +36 -0
  147. package/dist/common/uri/constantUri.js +112 -0
  148. package/dist/common/uri/constantUri.js.map +1 -0
  149. package/dist/common/uri/emptyUri.d.ts +3 -31
  150. package/dist/common/uri/emptyUri.js +3 -84
  151. package/dist/common/uri/emptyUri.js.map +1 -1
  152. package/dist/common/uri/fileUri.d.ts +1 -0
  153. package/dist/common/uri/fileUri.js +3 -2
  154. package/dist/common/uri/fileUri.js.map +1 -1
  155. package/dist/common/uri/uri.d.ts +11 -3
  156. package/dist/common/uri/uri.js +31 -20
  157. package/dist/common/uri/uri.js.map +1 -1
  158. package/dist/common/uri/uriUtils.d.ts +11 -5
  159. package/dist/common/uri/uriUtils.js +31 -53
  160. package/dist/common/uri/uriUtils.js.map +1 -1
  161. package/dist/common/workspaceEditUtils.js +4 -4
  162. package/dist/common/workspaceEditUtils.js.map +1 -1
  163. package/dist/languageServerBase.d.ts +11 -59
  164. package/dist/languageServerBase.js +18 -8
  165. package/dist/languageServerBase.js.map +1 -1
  166. package/dist/languageService/analyzerServiceExecutor.d.ts +1 -1
  167. package/dist/languageService/analyzerServiceExecutor.js +4 -5
  168. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  169. package/dist/languageService/autoImporter.d.ts +3 -3
  170. package/dist/languageService/autoImporter.js +2 -1
  171. package/dist/languageService/autoImporter.js.map +1 -1
  172. package/dist/languageService/callHierarchyProvider.js +6 -6
  173. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  174. package/dist/languageService/codeActionProvider.js +43 -42
  175. package/dist/languageService/codeActionProvider.js.map +1 -1
  176. package/dist/languageService/completionProvider.d.ts +2 -2
  177. package/dist/languageService/completionProvider.js +10 -11
  178. package/dist/languageService/completionProvider.js.map +1 -1
  179. package/dist/languageService/definitionProvider.js +3 -3
  180. package/dist/languageService/definitionProvider.js.map +1 -1
  181. package/dist/languageService/documentHighlightProvider.js +2 -2
  182. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  183. package/dist/languageService/documentSymbolCollector.js +3 -3
  184. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  185. package/dist/languageService/documentSymbolProvider.d.ts +3 -2
  186. package/dist/languageService/documentSymbolProvider.js +4 -3
  187. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  188. package/dist/languageService/hoverProvider.js +2 -2
  189. package/dist/languageService/hoverProvider.js.map +1 -1
  190. package/dist/languageService/importSorter.d.ts +2 -2
  191. package/dist/languageService/importSorter.js +1 -1
  192. package/dist/languageService/importSorter.js.map +1 -1
  193. package/dist/languageService/referencesProvider.d.ts +4 -4
  194. package/dist/languageService/referencesProvider.js +4 -4
  195. package/dist/languageService/referencesProvider.js.map +1 -1
  196. package/dist/languageService/signatureHelpProvider.js +4 -4
  197. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  198. package/dist/languageService/symbolIndexer.d.ts +5 -2
  199. package/dist/languageService/symbolIndexer.js +21 -11
  200. package/dist/languageService/symbolIndexer.js.map +1 -1
  201. package/dist/languageService/workspaceSymbolProvider.js +2 -2
  202. package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
  203. package/dist/localization/localize.d.ts +3 -0
  204. package/dist/localization/localize.js +22 -16
  205. package/dist/localization/localize.js.map +1 -1
  206. package/dist/localization/package.nls.cs.json +1 -0
  207. package/dist/localization/package.nls.de.json +1 -0
  208. package/dist/localization/package.nls.en-us.json +1 -0
  209. package/dist/localization/package.nls.es.json +1 -0
  210. package/dist/localization/package.nls.fr.json +1 -0
  211. package/dist/localization/package.nls.it.json +1 -0
  212. package/dist/localization/package.nls.ja.json +1 -0
  213. package/dist/localization/package.nls.ko.json +1 -0
  214. package/dist/localization/package.nls.pl.json +1 -0
  215. package/dist/localization/package.nls.pt-br.json +1 -0
  216. package/dist/localization/package.nls.qps-ploc.json +1 -0
  217. package/dist/localization/package.nls.ru.json +1 -0
  218. package/dist/localization/package.nls.tr.json +1 -0
  219. package/dist/localization/package.nls.zh-cn.json +1 -0
  220. package/dist/localization/package.nls.zh-tw.json +1 -0
  221. package/dist/nodeMain.d.ts +1 -1
  222. package/dist/nodeMain.js +2 -2
  223. package/dist/nodeMain.js.map +1 -1
  224. package/dist/parser/parser.d.ts +7 -4
  225. package/dist/parser/parser.js +7 -5
  226. package/dist/parser/parser.js.map +1 -1
  227. package/dist/pyright.js +6 -6
  228. package/dist/pyright.js.map +1 -1
  229. package/dist/pyrightFileSystem.d.ts +3 -1
  230. package/dist/pyrightFileSystem.js +14 -9
  231. package/dist/pyrightFileSystem.js.map +1 -1
  232. package/dist/readonlyAugmentedFileSystem.d.ts +0 -1
  233. package/dist/readonlyAugmentedFileSystem.js +0 -3
  234. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  235. package/dist/server.d.ts +4 -2
  236. package/dist/server.js +15 -11
  237. package/dist/server.js.map +1 -1
  238. package/dist/tests/cacheManager.test.js +35 -0
  239. package/dist/tests/cacheManager.test.js.map +1 -1
  240. package/dist/tests/chainedSourceFiles.test.js +18 -18
  241. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  242. package/dist/tests/completions.test.js +4 -4
  243. package/dist/tests/completions.test.js.map +1 -1
  244. package/dist/tests/config.test.js +19 -14
  245. package/dist/tests/config.test.js.map +1 -1
  246. package/dist/tests/documentSymbolCollector.test.js +2 -3
  247. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  248. package/dist/tests/envVarUtils.test.js +77 -2
  249. package/dist/tests/envVarUtils.test.js.map +1 -1
  250. package/dist/tests/filesystem.test.js +13 -13
  251. package/dist/tests/filesystem.test.js.map +1 -1
  252. package/dist/tests/fourSlashParser.test.js +10 -10
  253. package/dist/tests/fourSlashParser.test.js.map +1 -1
  254. package/dist/tests/harness/fourslash/fourSlashParser.js +12 -10
  255. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  256. package/dist/tests/harness/fourslash/fourSlashTypes.d.ts +1 -0
  257. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  258. package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -2
  259. package/dist/tests/harness/fourslash/testLanguageService.js +2 -2
  260. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  261. package/dist/tests/harness/fourslash/testState.d.ts +6 -6
  262. package/dist/tests/harness/fourslash/testState.js +42 -37
  263. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  264. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +1 -1
  265. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  266. package/dist/tests/harness/testHost.d.ts +7 -0
  267. package/dist/tests/harness/testHost.js +33 -14
  268. package/dist/tests/harness/testHost.js.map +1 -1
  269. package/dist/tests/harness/vfs/factory.d.ts +3 -4
  270. package/dist/tests/harness/vfs/factory.js +7 -6
  271. package/dist/tests/harness/vfs/factory.js.map +1 -1
  272. package/dist/tests/harness/vfs/filesystem.d.ts +5 -3
  273. package/dist/tests/harness/vfs/filesystem.js +22 -15
  274. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  275. package/dist/tests/importResolver.test.js +35 -34
  276. package/dist/tests/importResolver.test.js.map +1 -1
  277. package/dist/tests/importStatementUtils.test.js +9 -10
  278. package/dist/tests/importStatementUtils.test.js.map +1 -1
  279. package/dist/tests/ipythonMode.test.js +1 -1
  280. package/dist/tests/ipythonMode.test.js.map +1 -1
  281. package/dist/tests/logger.test.js +1 -1
  282. package/dist/tests/logger.test.js.map +1 -1
  283. package/dist/tests/lsp/languageServer.js +6 -5
  284. package/dist/tests/lsp/languageServer.js.map +1 -1
  285. package/dist/tests/lsp/languageServerTestUtils.d.ts +1 -1
  286. package/dist/tests/lsp/languageServerTestUtils.js +15 -10
  287. package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
  288. package/dist/tests/parseTreeUtils.test.js +1 -2
  289. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  290. package/dist/tests/parser.test.js +14 -14
  291. package/dist/tests/parser.test.js.map +1 -1
  292. package/dist/tests/pyrightFileSystem.test.js +6 -5
  293. package/dist/tests/pyrightFileSystem.test.js.map +1 -1
  294. package/dist/tests/serialization.test.js +5 -5
  295. package/dist/tests/serialization.test.js.map +1 -1
  296. package/dist/tests/service.test.js +16 -25
  297. package/dist/tests/service.test.js.map +1 -1
  298. package/dist/tests/signatureHelp.test.js +1 -1
  299. package/dist/tests/signatureHelp.test.js.map +1 -1
  300. package/dist/tests/sourceFile.test.js +8 -5
  301. package/dist/tests/sourceFile.test.js.map +1 -1
  302. package/dist/tests/sourceMapperUtils.test.js +4 -4
  303. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  304. package/dist/tests/testState.test.js +5 -5
  305. package/dist/tests/testState.test.js.map +1 -1
  306. package/dist/tests/testStateUtils.js +8 -6
  307. package/dist/tests/testStateUtils.js.map +1 -1
  308. package/dist/tests/testUtils.d.ts +4 -8
  309. package/dist/tests/testUtils.js +9 -10
  310. package/dist/tests/testUtils.js.map +1 -1
  311. package/dist/tests/textEditUtil.test.js +3 -3
  312. package/dist/tests/textEditUtil.test.js.map +1 -1
  313. package/dist/tests/typeEvaluator1.test.js +1 -1
  314. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  315. package/dist/tests/typeEvaluator3.test.js +11 -5
  316. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  317. package/dist/tests/typePrinter.test.js.map +1 -1
  318. package/dist/tests/uri.test.js +220 -199
  319. package/dist/tests/uri.test.js.map +1 -1
  320. package/dist/tests/workspaceEditUtils.test.js +7 -7
  321. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  322. package/dist/tests/zipfs.test.js +7 -5
  323. package/dist/tests/zipfs.test.js.map +1 -1
  324. package/dist/workspaceFactory.d.ts +15 -6
  325. package/dist/workspaceFactory.js +16 -10
  326. package/dist/workspaceFactory.js.map +1 -1
  327. package/package.json +5 -5
@@ -1,12 +1,22 @@
1
+ /// <reference types="node" />
2
+ import { Worker } from 'worker_threads';
3
+ import { AnalysisRequest } from '../backgroundAnalysisBase';
1
4
  import { ConsoleInterface } from '../common/console';
2
5
  export interface CacheOwner {
3
6
  getCacheUsage(): number;
4
7
  emptyCache(): void;
5
8
  }
6
9
  export declare class CacheManager {
10
+ private readonly _maxWorkers;
7
11
  private _pausedCount;
8
12
  private readonly _cacheOwners;
13
+ private _sharedUsageBuffer;
14
+ private _sharedUsagePosition;
15
+ private _lastHeapStats;
16
+ constructor(_maxWorkers?: number);
9
17
  registerCacheOwner(provider: CacheOwner): void;
18
+ addWorker(index: number, worker: Worker): void;
19
+ handleCachedUsageBufferMessage(msg: AnalysisRequest): void;
10
20
  unregisterCacheOwner(provider: CacheOwner): void;
11
21
  pauseTracking(): {
12
22
  dispose(): void;
@@ -15,6 +25,8 @@ export declare class CacheManager {
15
25
  emptyCache(console?: ConsoleInterface): void;
16
26
  getUsedHeapRatio(console?: ConsoleInterface): number;
17
27
  private _convertToMB;
28
+ private _getSharedUsageBuffer;
29
+ private _getTotalHeapUsage;
18
30
  }
19
31
  export declare namespace CacheManager {
20
32
  function is(obj: any): obj is CacheManager;
@@ -13,13 +13,42 @@ exports.CacheManager = void 0;
13
13
  const debug_1 = require("../common/debug");
14
14
  const memUtils_1 = require("../common/memUtils");
15
15
  class CacheManager {
16
- constructor() {
16
+ constructor(_maxWorkers = 0) {
17
+ this._maxWorkers = _maxWorkers;
17
18
  this._pausedCount = 0;
18
19
  this._cacheOwners = [];
20
+ this._sharedUsagePosition = 0;
21
+ this._lastHeapStats = Date.now();
19
22
  }
20
23
  registerCacheOwner(provider) {
21
24
  this._cacheOwners.push(provider);
22
25
  }
26
+ addWorker(index, worker) {
27
+ // Send the sharedArrayBuffer to the worker so it can be used
28
+ // to keep track of heap usage on all threads.
29
+ const buffer = this._getSharedUsageBuffer();
30
+ if (buffer) {
31
+ // The SharedArrayBuffer needs to be separate from data in order for it
32
+ // to be marshalled correctly.
33
+ worker.postMessage({ requestType: 'cacheUsageBuffer', sharedUsageBuffer: buffer, data: index.toString() });
34
+ worker.on('exit', () => {
35
+ const view = new Float64Array(buffer);
36
+ view[index] = 0;
37
+ });
38
+ }
39
+ }
40
+ handleCachedUsageBufferMessage(msg) {
41
+ if (msg.requestType === 'cacheUsageBuffer') {
42
+ const index = parseInt(msg.data || '0');
43
+ const buffer = msg.sharedUsageBuffer;
44
+ // Index of zero is reserved for the main thread so if
45
+ // the index isn't passed, don't save the shared buffer.
46
+ if (buffer && index) {
47
+ this._sharedUsageBuffer = buffer;
48
+ this._sharedUsagePosition = index;
49
+ }
50
+ }
51
+ }
23
52
  unregisterCacheOwner(provider) {
24
53
  const index = this._cacheOwners.findIndex((p) => p === provider);
25
54
  if (index < 0) {
@@ -60,19 +89,50 @@ class CacheManager {
60
89
  // Returns a ratio of used bytes to total bytes.
61
90
  getUsedHeapRatio(console) {
62
91
  const heapStats = (0, memUtils_1.getHeapStatistics)();
63
- if (console) {
92
+ let usage = this._getTotalHeapUsage(heapStats);
93
+ if (console && Date.now() - this._lastHeapStats > 1000) {
94
+ // This can fill up the user's console, so we only do it once per second.
95
+ this._lastHeapStats = Date.now();
64
96
  console.info(`Heap stats: ` +
65
97
  `total_heap_size=${this._convertToMB(heapStats.total_heap_size)}, ` +
66
98
  `used_heap_size=${this._convertToMB(heapStats.used_heap_size)}, ` +
99
+ `cross_worker_used_heap_size=${this._convertToMB(usage)}, ` +
67
100
  `total_physical_size=${this._convertToMB(heapStats.total_physical_size)}, ` +
68
101
  `total_available_size=${this._convertToMB(heapStats.total_available_size)}, ` +
69
102
  `heap_size_limit=${this._convertToMB(heapStats.heap_size_limit)}`);
70
103
  }
71
- return heapStats.used_heap_size / heapStats.heap_size_limit;
104
+ // Total usage seems to be off by about 5%, so we'll add that back in
105
+ // to make the ratio more accurate. (200MB at 4GB)
106
+ usage += usage * 0.05;
107
+ return usage / heapStats.heap_size_limit;
72
108
  }
73
109
  _convertToMB(bytes) {
74
110
  return `${Math.round(bytes / (1024 * 1024))}MB`;
75
111
  }
112
+ _getSharedUsageBuffer() {
113
+ try {
114
+ if (!this._sharedUsageBuffer && this._maxWorkers > 0) {
115
+ // Allocate enough space for the workers and the main thread.
116
+ this._sharedUsageBuffer = new SharedArrayBuffer(8 * (this._maxWorkers + 1));
117
+ }
118
+ return this._sharedUsageBuffer;
119
+ }
120
+ catch {
121
+ // SharedArrayBuffer is not supported.
122
+ return undefined;
123
+ }
124
+ }
125
+ _getTotalHeapUsage(heapStats) {
126
+ // If the SharedArrayBuffer is supported, we'll use it to to get usage
127
+ // from other threads and add that to our own
128
+ const buffer = this._getSharedUsageBuffer();
129
+ if (buffer) {
130
+ const view = new Float64Array(buffer);
131
+ view[this._sharedUsagePosition] = heapStats.used_heap_size;
132
+ return view.reduce((a, b) => a + b, 0);
133
+ }
134
+ return heapStats.used_heap_size;
135
+ }
76
136
  }
77
137
  exports.CacheManager = CacheManager;
78
138
  (function (CacheManager) {
@@ -1 +1 @@
1
- {"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../../../src/analyzer/cacheManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../../../src/analyzer/cacheManager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, CallNode, CaseNode, ClassNode, DelNode, DictionaryNode, ErrorNode, ExceptNode, ForNode, FormatStringNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromAsNode, ImportFromNode, IndexNode, LambdaNode, ListComprehensionIfNode, ListComprehensionNode, ListNode, MatchNode, MemberAccessNode, ModuleNameNode, NameNode, NonlocalNode, ParseNode, PatternClassNode, RaiseNode, ReturnNode, SetNode, SliceNode, StatementListNode, StringListNode, SuiteNode, TernaryNode, TryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, TypeParameterNode, UnaryOperationNode, UnpackNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
2
- import { ParseResults } from '../parser/parser';
2
+ import { ParserOutput } from '../parser/parser';
3
3
  import { ImportResolver } from './importResolver';
4
4
  import { ParseTreeWalker } from './parseTreeWalker';
5
5
  import { SourceMapper } from './sourceMapper';
@@ -7,7 +7,6 @@ import { TypeEvaluator } from './typeEvaluatorTypes';
7
7
  export declare class Checker extends ParseTreeWalker {
8
8
  private _importResolver;
9
9
  private _evaluator;
10
- private _parseResults;
11
10
  private _sourceMapper;
12
11
  private _dependentFiles?;
13
12
  private readonly _moduleNode;
@@ -15,7 +14,7 @@ export declare class Checker extends ParseTreeWalker {
15
14
  private _isUnboundCheckSuppressed;
16
15
  private _scopedNodes;
17
16
  private _typeParameterLists;
18
- constructor(_importResolver: ImportResolver, _evaluator: TypeEvaluator, _parseResults: ParseResults, _sourceMapper: SourceMapper, _dependentFiles?: ParseResults[] | undefined);
17
+ constructor(_importResolver: ImportResolver, _evaluator: TypeEvaluator, parseResults: ParserOutput, _sourceMapper: SourceMapper, _dependentFiles?: ParserOutput[] | undefined);
19
18
  check(): void;
20
19
  walk(node: ParseNode): void;
21
20
  visitSuite(node: SuiteNode): boolean;
@@ -78,11 +78,10 @@ const types_1 = require("./types");
78
78
  // functions to be emitted.
79
79
  const isPrintCodeComplexityEnabled = false;
80
80
  class Checker extends parseTreeWalker_1.ParseTreeWalker {
81
- constructor(_importResolver, _evaluator, _parseResults, _sourceMapper, _dependentFiles) {
81
+ constructor(_importResolver, _evaluator, parseResults, _sourceMapper, _dependentFiles) {
82
82
  super();
83
83
  this._importResolver = _importResolver;
84
84
  this._evaluator = _evaluator;
85
- this._parseResults = _parseResults;
86
85
  this._sourceMapper = _sourceMapper;
87
86
  this._dependentFiles = _dependentFiles;
88
87
  this._isUnboundCheckSuppressed = false;
@@ -91,7 +90,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
91
90
  this._scopedNodes = [];
92
91
  // A list of all visited type parameter lists.
93
92
  this._typeParameterLists = [];
94
- this._moduleNode = _parseResults.parseTree;
93
+ this._moduleNode = parseResults.parseTree;
95
94
  this._fileInfo = AnalyzerNodeInfo.getFileInfo(this._moduleNode);
96
95
  }
97
96
  check() {
@@ -3424,7 +3423,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3424
3423
  // Validates that any overridden member variables are not marked
3425
3424
  // as Final in parent classes.
3426
3425
  _validateFinalMemberOverrides(classType) {
3427
- classType.details.fields.forEach((localSymbol, name) => {
3426
+ types_1.ClassType.getSymbolTable(classType).forEach((localSymbol, name) => {
3428
3427
  const parentSymbol = (0, typeUtils_1.lookUpClassMember)(classType, name, 1 /* MemberAccessFlags.SkipOriginalClass */);
3429
3428
  if (parentSymbol && (0, types_1.isInstantiableClass)(parentSymbol.classType) && !SymbolNameUtils.isPrivateName(name)) {
3430
3429
  // Did the parent class explicitly declare the variable as final?
@@ -3460,21 +3459,23 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3460
3459
  const declaredValueType = (0, enums_1.getEnumDeclaredValueType)(this._evaluator, classType, /* declaredTypesOnly */ true);
3461
3460
  // Is there a custom "__new__" and/or "__init__" method? If so, we'll
3462
3461
  // verify that the signature of these calls is compatible with the values.
3463
- let newMemberTypeResult = (0, constructors_1.getBoundNewMethod)(this._evaluator, node.name, classType, 4 /* MemberAccessFlags.SkipObjectBaseClass */);
3462
+ let newMemberTypeResult = (0, constructors_1.getBoundNewMethod)(this._evaluator, node.name, classType,
3463
+ /* diag */ undefined, 4 /* MemberAccessFlags.SkipObjectBaseClass */);
3464
3464
  // If this __new__ comes from a built-in class like Enum, we'll ignore it.
3465
3465
  if (newMemberTypeResult === null || newMemberTypeResult === void 0 ? void 0 : newMemberTypeResult.classType) {
3466
3466
  if ((0, types_1.isClass)(newMemberTypeResult.classType) && types_1.ClassType.isBuiltIn(newMemberTypeResult.classType)) {
3467
3467
  newMemberTypeResult = undefined;
3468
3468
  }
3469
3469
  }
3470
- let initMemberTypeResult = (0, constructors_1.getBoundInitMethod)(this._evaluator, node.name, types_1.ClassType.cloneAsInstance(classType), 4 /* MemberAccessFlags.SkipObjectBaseClass */);
3470
+ let initMemberTypeResult = (0, constructors_1.getBoundInitMethod)(this._evaluator, node.name, types_1.ClassType.cloneAsInstance(classType),
3471
+ /* diag */ undefined, 4 /* MemberAccessFlags.SkipObjectBaseClass */);
3471
3472
  // If this __init__ comes from a built-in class like Enum, we'll ignore it.
3472
3473
  if (initMemberTypeResult === null || initMemberTypeResult === void 0 ? void 0 : initMemberTypeResult.classType) {
3473
3474
  if ((0, types_1.isClass)(initMemberTypeResult.classType) && types_1.ClassType.isBuiltIn(initMemberTypeResult.classType)) {
3474
3475
  initMemberTypeResult = undefined;
3475
3476
  }
3476
3477
  }
3477
- classType.details.fields.forEach((symbol, name) => {
3478
+ types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
3478
3479
  var _a;
3479
3480
  // Enum members don't have type annotations.
3480
3481
  if (symbol.getTypedDeclarations().length > 0) {
@@ -3552,7 +3553,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3552
3553
  const initOnlySymbolMap = new Map();
3553
3554
  types_1.ClassType.getReverseMro(classType).forEach((mroClass) => {
3554
3555
  if ((0, types_1.isClass)(mroClass) && types_1.ClassType.isDataClass(mroClass)) {
3555
- mroClass.details.fields.forEach((symbol, name) => {
3556
+ types_1.ClassType.getSymbolTable(mroClass).forEach((symbol, name) => {
3556
3557
  if (symbol.isInitVar()) {
3557
3558
  initOnlySymbolMap.set(name, symbol);
3558
3559
  }
@@ -3664,7 +3665,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3664
3665
  if (types_1.ClassType.isFinal(classType)) {
3665
3666
  (0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 2048 /* ClassTypeFlags.SupportsAbstractMethods */);
3666
3667
  }
3667
- classType.details.fields.forEach((localSymbol, name) => {
3668
+ types_1.ClassType.getSymbolTable(classType).forEach((localSymbol, name) => {
3668
3669
  abstractSymbols.delete(name);
3669
3670
  // This applies only to instance members.
3670
3671
  if (!localSymbol.isInstanceMember()) {
@@ -3832,7 +3833,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3832
3833
  if (types_1.ClassType.isDataClass(classType)) {
3833
3834
  return;
3834
3835
  }
3835
- classType.details.fields.forEach((symbol, name) => {
3836
+ types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
3836
3837
  const decls = symbol.getDeclarations();
3837
3838
  const isDefinedBySlots = decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && decl.isDefinedBySlots);
3838
3839
  if (isDefinedBySlots) {
@@ -4079,7 +4080,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4079
4080
  const overrideSymbol = overrideClassAndSymbol.symbol;
4080
4081
  let overrideType = this._evaluator.getEffectiveTypeOfSymbol(overrideSymbol);
4081
4082
  overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, overrideClassAndSymbol.classType);
4082
- const childOverrideSymbol = childClassType.details.fields.get(memberName);
4083
+ const childOverrideSymbol = types_1.ClassType.getSymbolTable(childClassType).get(memberName);
4083
4084
  const childOverrideType = childOverrideSymbol
4084
4085
  ? this._evaluator.getEffectiveTypeOfSymbol(childOverrideSymbol)
4085
4086
  : undefined;
@@ -4207,7 +4208,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4207
4208
  // are decorated. For example, if the first overload is not marked @final
4208
4209
  // but subsequent ones are, an error should be reported.
4209
4210
  _validateOverloadDecoratorConsistency(classType) {
4210
- classType.details.fields.forEach((symbol, name) => {
4211
+ types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
4211
4212
  const primaryDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
4212
4213
  if (!primaryDecl || primaryDecl.type !== 5 /* DeclarationType.Function */) {
4213
4214
  return;
@@ -4330,7 +4331,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4330
4331
  // types as the original method. Also marks the class as abstract if one
4331
4332
  // or more abstract methods are not overridden.
4332
4333
  _validateBaseClassOverrides(classType) {
4333
- classType.details.fields.forEach((symbol, name) => {
4334
+ types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
4334
4335
  // Private symbols do not need to match in type since their
4335
4336
  // names are mangled, and subclasses can't access the value in
4336
4337
  // the parent class.
@@ -4408,6 +4409,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4408
4409
  if (!symbol.getDeclarations().some((decl) => decl === overrideFunction.details.declaration)) {
4409
4410
  return;
4410
4411
  }
4412
+ // If the base class is unknown, don't report a missing decorator.
4413
+ if ((0, types_1.isAnyOrUnknown)(baseMember.classType)) {
4414
+ return;
4415
+ }
4411
4416
  const funcNode = overrideFunction.details.declaration.node;
4412
4417
  this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportImplicitOverride, localize_1.LocMessage.overrideDecoratorMissing().format({
4413
4418
  name: funcNode.name.value,