@zzzen/pyright-internal 1.2.0-dev.20260809 → 1.2.0-dev.20260823

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 (365) hide show
  1. package/dist/analyzer/analyzerNodeInfo.d.ts +119 -24
  2. package/dist/analyzer/analyzerNodeInfo.js +408 -89
  3. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  4. package/dist/analyzer/binder.d.ts +6 -3
  5. package/dist/analyzer/binder.js +157 -70
  6. package/dist/analyzer/binder.js.map +1 -1
  7. package/dist/analyzer/checker.d.ts +5 -2
  8. package/dist/analyzer/checker.js +92 -34
  9. package/dist/analyzer/checker.js.map +1 -1
  10. package/dist/analyzer/codeFlowEngine.d.ts +2 -1
  11. package/dist/analyzer/codeFlowEngine.js +12 -10
  12. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  13. package/dist/analyzer/codeFlowUtils.d.ts +2 -1
  14. package/dist/analyzer/codeFlowUtils.js +2 -3
  15. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  16. package/dist/analyzer/constraintSolver.js +47 -7
  17. package/dist/analyzer/constraintSolver.js.map +1 -1
  18. package/dist/analyzer/constructors.js +18 -8
  19. package/dist/analyzer/constructors.js.map +1 -1
  20. package/dist/analyzer/dataClasses.d.ts +6 -4
  21. package/dist/analyzer/dataClasses.js +119 -75
  22. package/dist/analyzer/dataClasses.js.map +1 -1
  23. package/dist/analyzer/declarationUtils.d.ts +2 -1
  24. package/dist/analyzer/declarationUtils.js +2 -2
  25. package/dist/analyzer/declarationUtils.js.map +1 -1
  26. package/dist/analyzer/decorators.d.ts +5 -4
  27. package/dist/analyzer/decorators.js +38 -21
  28. package/dist/analyzer/decorators.js.map +1 -1
  29. package/dist/analyzer/enums.d.ts +5 -4
  30. package/dist/analyzer/enums.js +11 -10
  31. package/dist/analyzer/enums.js.map +1 -1
  32. package/dist/analyzer/importResolver.d.ts +1 -1
  33. package/dist/analyzer/importResolver.js +5 -3
  34. package/dist/analyzer/importResolver.js.map +1 -1
  35. package/dist/analyzer/importStatementUtils.d.ts +3 -1
  36. package/dist/analyzer/importStatementUtils.js +14 -7
  37. package/dist/analyzer/importStatementUtils.js.map +1 -1
  38. package/dist/analyzer/namedTuples.d.ts +2 -1
  39. package/dist/analyzer/namedTuples.js +3 -4
  40. package/dist/analyzer/namedTuples.js.map +1 -1
  41. package/dist/analyzer/operations.d.ts +3 -2
  42. package/dist/analyzer/operations.js +8 -8
  43. package/dist/analyzer/operations.js.map +1 -1
  44. package/dist/analyzer/packageTypeVerifier.js +2 -2
  45. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  46. package/dist/analyzer/parseTreeUtils.d.ts +13 -11
  47. package/dist/analyzer/parseTreeUtils.js +62 -36
  48. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  49. package/dist/analyzer/parseTreeWalker.d.ts +7 -2
  50. package/dist/analyzer/parseTreeWalker.js +29 -175
  51. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  52. package/dist/analyzer/patternMatching.d.ts +4 -3
  53. package/dist/analyzer/patternMatching.js +47 -43
  54. package/dist/analyzer/patternMatching.js.map +1 -1
  55. package/dist/analyzer/program.d.ts +12 -0
  56. package/dist/analyzer/program.js +235 -29
  57. package/dist/analyzer/program.js.map +1 -1
  58. package/dist/analyzer/properties.d.ts +4 -3
  59. package/dist/analyzer/properties.js +7 -8
  60. package/dist/analyzer/properties.js.map +1 -1
  61. package/dist/analyzer/protocols.js +14 -2
  62. package/dist/analyzer/protocols.js.map +1 -1
  63. package/dist/analyzer/scope.d.ts +3 -0
  64. package/dist/analyzer/scope.js +10 -0
  65. package/dist/analyzer/scope.js.map +1 -1
  66. package/dist/analyzer/scopeUtils.d.ts +4 -3
  67. package/dist/analyzer/scopeUtils.js +8 -8
  68. package/dist/analyzer/scopeUtils.js.map +1 -1
  69. package/dist/analyzer/sentinel.d.ts +2 -1
  70. package/dist/analyzer/sentinel.js +2 -3
  71. package/dist/analyzer/sentinel.js.map +1 -1
  72. package/dist/analyzer/service.js +28 -10
  73. package/dist/analyzer/service.js.map +1 -1
  74. package/dist/analyzer/sourceEnumerator.d.ts +5 -0
  75. package/dist/analyzer/sourceEnumerator.js +57 -3
  76. package/dist/analyzer/sourceEnumerator.js.map +1 -1
  77. package/dist/analyzer/sourceFile.d.ts +12 -6
  78. package/dist/analyzer/sourceFile.js +73 -50
  79. package/dist/analyzer/sourceFile.js.map +1 -1
  80. package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -0
  81. package/dist/analyzer/sourceFileInfoUtils.js +8 -0
  82. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  83. package/dist/analyzer/sourceMapper.d.ts +4 -1
  84. package/dist/analyzer/sourceMapper.js +14 -8
  85. package/dist/analyzer/sourceMapper.js.map +1 -1
  86. package/dist/analyzer/symbol.d.ts +4 -1
  87. package/dist/analyzer/symbol.js +8 -0
  88. package/dist/analyzer/symbol.js.map +1 -1
  89. package/dist/analyzer/testWalker.js +2 -1
  90. package/dist/analyzer/testWalker.js.map +1 -1
  91. package/dist/analyzer/tracePrinter.d.ts +2 -1
  92. package/dist/analyzer/tracePrinter.js +2 -2
  93. package/dist/analyzer/tracePrinter.js.map +1 -1
  94. package/dist/analyzer/tuples.d.ts +3 -2
  95. package/dist/analyzer/tuples.js +5 -5
  96. package/dist/analyzer/tuples.js.map +1 -1
  97. package/dist/analyzer/typeCacheUtils.d.ts +6 -2
  98. package/dist/analyzer/typeCacheUtils.js +16 -37
  99. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  100. package/dist/analyzer/typeDocStringUtils.d.ts +5 -7
  101. package/dist/analyzer/typeDocStringUtils.js +229 -132
  102. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  103. package/dist/analyzer/typeEvaluator.d.ts +2 -0
  104. package/dist/analyzer/typeEvaluator.js +1280 -302
  105. package/dist/analyzer/typeEvaluator.js.map +1 -1
  106. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -0
  107. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  108. package/dist/analyzer/typeGuards.d.ts +3 -2
  109. package/dist/analyzer/typeGuards.js +37 -33
  110. package/dist/analyzer/typeGuards.js.map +1 -1
  111. package/dist/analyzer/typeStubWriter.js +12 -9
  112. package/dist/analyzer/typeStubWriter.js.map +1 -1
  113. package/dist/analyzer/typeUtils.js +3 -1
  114. package/dist/analyzer/typeUtils.js.map +1 -1
  115. package/dist/analyzer/typedDicts.d.ts +4 -3
  116. package/dist/analyzer/typedDicts.js +15 -14
  117. package/dist/analyzer/typedDicts.js.map +1 -1
  118. package/dist/analyzer/types.d.ts +11 -1
  119. package/dist/analyzer/types.js +48 -0
  120. package/dist/analyzer/types.js.map +1 -1
  121. package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
  122. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  123. package/dist/common/collectionUtils.js +15 -6
  124. package/dist/common/collectionUtils.js.map +1 -1
  125. package/dist/common/commandLineOptions.d.ts +1 -0
  126. package/dist/common/commandLineOptions.js.map +1 -1
  127. package/dist/common/configOptions.d.ts +4 -1
  128. package/dist/common/configOptions.js +68 -12
  129. package/dist/common/configOptions.js.map +1 -1
  130. package/dist/common/envVarUtils.d.ts +1 -0
  131. package/dist/common/envVarUtils.js +41 -10
  132. package/dist/common/envVarUtils.js.map +1 -1
  133. package/dist/common/extensibility.d.ts +3 -1
  134. package/dist/common/extensibility.js.map +1 -1
  135. package/dist/common/extraPathGlob.d.ts +12 -0
  136. package/dist/common/extraPathGlob.js +315 -0
  137. package/dist/common/extraPathGlob.js.map +1 -0
  138. package/dist/common/host.d.ts +2 -0
  139. package/dist/common/host.js.map +1 -1
  140. package/dist/common/languageServerInterface.d.ts +2 -1
  141. package/dist/common/languageServerInterface.js.map +1 -1
  142. package/dist/common/pathConsts.d.ts +1 -0
  143. package/dist/common/pathConsts.js +11 -1
  144. package/dist/common/pathConsts.js.map +1 -1
  145. package/dist/common/processUtils.d.ts +4 -2
  146. package/dist/common/processUtils.js +3 -0
  147. package/dist/common/processUtils.js.map +1 -1
  148. package/dist/common/stringUtils.d.ts +6 -0
  149. package/dist/common/stringUtils.js +87 -5
  150. package/dist/common/stringUtils.js.map +1 -1
  151. package/dist/common/textEditTracker.d.ts +3 -1
  152. package/dist/common/textEditTracker.js +8 -6
  153. package/dist/common/textEditTracker.js.map +1 -1
  154. package/dist/common/textRangeCollection.d.ts +1 -0
  155. package/dist/common/textRangeCollection.js +32 -1
  156. package/dist/common/textRangeCollection.js.map +1 -1
  157. package/dist/common/uri/uriUtils.d.ts +3 -0
  158. package/dist/common/uri/uriUtils.js +65 -15
  159. package/dist/common/uri/uriUtils.js.map +1 -1
  160. package/dist/fileSystemMapping.d.ts +10 -0
  161. package/dist/fileSystemMapping.js +176 -0
  162. package/dist/fileSystemMapping.js.map +1 -0
  163. package/dist/languageService/analyzerServiceExecutor.js +2 -1
  164. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  165. package/dist/languageService/autoImporter.d.ts +1 -0
  166. package/dist/languageService/autoImporter.js +32 -5
  167. package/dist/languageService/autoImporter.js.map +1 -1
  168. package/dist/languageService/callHierarchyProvider.d.ts +7 -0
  169. package/dist/languageService/callHierarchyProvider.js +97 -11
  170. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  171. package/dist/languageService/completionProvider.d.ts +30 -8
  172. package/dist/languageService/completionProvider.js +298 -93
  173. package/dist/languageService/completionProvider.js.map +1 -1
  174. package/dist/languageService/definitionProvider.js +7 -6
  175. package/dist/languageService/definitionProvider.js.map +1 -1
  176. package/dist/languageService/documentHighlightProvider.js +2 -1
  177. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  178. package/dist/languageService/documentSymbolCollector.d.ts +3 -1
  179. package/dist/languageService/documentSymbolCollector.js +78 -14
  180. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  181. package/dist/languageService/documentSymbolProvider.js +3 -2
  182. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  183. package/dist/languageService/fileWatcherDynamicFeature.js +28 -1
  184. package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
  185. package/dist/languageService/hoverProvider.d.ts +2 -1
  186. package/dist/languageService/hoverProvider.js +48 -16
  187. package/dist/languageService/hoverProvider.js.map +1 -1
  188. package/dist/languageService/importSorter.d.ts +3 -1
  189. package/dist/languageService/importSorter.js +4 -2
  190. package/dist/languageService/importSorter.js.map +1 -1
  191. package/dist/languageService/importStatementCandidates.js +4 -2
  192. package/dist/languageService/importStatementCandidates.js.map +1 -1
  193. package/dist/languageService/quickActions.js +2 -1
  194. package/dist/languageService/quickActions.js.map +1 -1
  195. package/dist/languageService/referencesProvider.js +12 -5
  196. package/dist/languageService/referencesProvider.js.map +1 -1
  197. package/dist/languageService/signatureHelpProvider.d.ts +3 -0
  198. package/dist/languageService/signatureHelpProvider.js +56 -18
  199. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  200. package/dist/languageService/symbolIndexer.d.ts +2 -1
  201. package/dist/languageService/symbolIndexer.js +7 -7
  202. package/dist/languageService/symbolIndexer.js.map +1 -1
  203. package/dist/languageService/tooltipUtils.d.ts +1 -1
  204. package/dist/languageService/tooltipUtils.js +103 -35
  205. package/dist/languageService/tooltipUtils.js.map +1 -1
  206. package/dist/languageService/workspaceSymbolProvider.js +3 -2
  207. package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
  208. package/dist/localization/localize.d.ts +12 -0
  209. package/dist/localization/localize.js +14 -0
  210. package/dist/localization/localize.js.map +1 -1
  211. package/dist/localization/package.nls.cs.json +11 -0
  212. package/dist/localization/package.nls.de.json +11 -0
  213. package/dist/localization/package.nls.en-us.json +18 -0
  214. package/dist/localization/package.nls.es.json +11 -0
  215. package/dist/localization/package.nls.fr.json +11 -0
  216. package/dist/localization/package.nls.it.json +11 -0
  217. package/dist/localization/package.nls.ja.json +11 -0
  218. package/dist/localization/package.nls.ko.json +11 -0
  219. package/dist/localization/package.nls.pl.json +11 -0
  220. package/dist/localization/package.nls.pt-br.json +11 -0
  221. package/dist/localization/package.nls.qps-ploc.json +11 -0
  222. package/dist/localization/package.nls.ru.json +11 -0
  223. package/dist/localization/package.nls.tr.json +11 -0
  224. package/dist/localization/package.nls.zh-cn.json +12 -1
  225. package/dist/localization/package.nls.zh-tw.json +13 -2
  226. package/dist/parser/parseNodes.d.ts +85 -80
  227. package/dist/parser/parseNodes.js +182 -159
  228. package/dist/parser/parseNodes.js.map +1 -1
  229. package/dist/parser/parseTreeUtils.d.ts +3 -0
  230. package/dist/parser/parseTreeUtils.js +209 -0
  231. package/dist/parser/parseTreeUtils.js.map +1 -0
  232. package/dist/parser/parser.d.ts +16 -6
  233. package/dist/parser/parser.js +210 -144
  234. package/dist/parser/parser.js.map +1 -1
  235. package/dist/parser/stringAnnotationInfo.d.ts +16 -0
  236. package/dist/parser/stringAnnotationInfo.js +26 -0
  237. package/dist/parser/stringAnnotationInfo.js.map +1 -0
  238. package/dist/readonlyAugmentedFileSystem.d.ts +2 -9
  239. package/dist/readonlyAugmentedFileSystem.js +17 -144
  240. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  241. package/dist/server.js +2 -2
  242. package/dist/server.js.map +1 -1
  243. package/dist/tests/analyzerNodeInfo.test.d.ts +1 -0
  244. package/dist/tests/analyzerNodeInfo.test.js +113 -0
  245. package/dist/tests/analyzerNodeInfo.test.js.map +1 -0
  246. package/dist/tests/collectionUtils.test.js +46 -0
  247. package/dist/tests/collectionUtils.test.js.map +1 -1
  248. package/dist/tests/completions.test.js +34 -0
  249. package/dist/tests/completions.test.js.map +1 -1
  250. package/dist/tests/config.test.js +131 -6
  251. package/dist/tests/config.test.js.map +1 -1
  252. package/dist/tests/extraPathGlob.test.d.ts +1 -0
  253. package/dist/tests/extraPathGlob.test.js +434 -0
  254. package/dist/tests/extraPathGlob.test.js.map +1 -0
  255. package/dist/tests/fileSystemMapping.test.d.ts +1 -0
  256. package/dist/tests/fileSystemMapping.test.js +458 -0
  257. package/dist/tests/fileSystemMapping.test.js.map +1 -0
  258. package/dist/tests/fourslash/completions.call.typedDict.fourslash.js +23 -0
  259. package/dist/tests/fourslash/completions.call.typedDict.fourslash.js.map +1 -1
  260. package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js +14 -0
  261. package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js.map +1 -1
  262. package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js +7 -0
  263. package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js.map +1 -1
  264. package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.d.ts +1 -0
  265. package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js +41 -0
  266. package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js.map +1 -0
  267. package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js +2 -0
  268. package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js.map +1 -1
  269. package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js +5 -0
  270. package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js.map +1 -1
  271. package/dist/tests/fourslash/completions.stringLiteral.fourslash.js +4 -0
  272. package/dist/tests/fourslash/completions.stringLiteral.fourslash.js.map +1 -1
  273. package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.d.ts +1 -0
  274. package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js +48 -0
  275. package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js.map +1 -0
  276. package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js +8 -2
  277. package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js.map +1 -1
  278. package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js +5 -2
  279. package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js.map +1 -1
  280. package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js +2 -2
  281. package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js.map +1 -1
  282. package/dist/tests/harness/fourslash/testState.js +1 -1
  283. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  284. package/dist/tests/hoverProvider.test.js +38 -0
  285. package/dist/tests/hoverProvider.test.js.map +1 -1
  286. package/dist/tests/importStatementUtils.test.js +6 -3
  287. package/dist/tests/importStatementUtils.test.js.map +1 -1
  288. package/dist/tests/ipythonMode.test.js +38 -0
  289. package/dist/tests/ipythonMode.test.js.map +1 -1
  290. package/dist/tests/parseTreeUtils.test.js +88 -0
  291. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  292. package/dist/tests/parser.test.js +60 -3
  293. package/dist/tests/parser.test.js.map +1 -1
  294. package/dist/tests/positionUtils.test.js +23 -0
  295. package/dist/tests/positionUtils.test.js.map +1 -1
  296. package/dist/tests/pyrightFileSystem.test.js +41 -0
  297. package/dist/tests/pyrightFileSystem.test.js.map +1 -1
  298. package/dist/tests/service.test.js +77 -0
  299. package/dist/tests/service.test.js.map +1 -1
  300. package/dist/tests/sourceEnumeratorSymlink.test.d.ts +1 -0
  301. package/dist/tests/sourceEnumeratorSymlink.test.js +203 -0
  302. package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -0
  303. package/dist/tests/stringUtils.test.js +84 -0
  304. package/dist/tests/stringUtils.test.js.map +1 -1
  305. package/dist/tests/symlinkAliasInvalidation.test.d.ts +1 -0
  306. package/dist/tests/symlinkAliasInvalidation.test.js +471 -0
  307. package/dist/tests/symlinkAliasInvalidation.test.js.map +1 -0
  308. package/dist/tests/testUtils.d.ts +2 -0
  309. package/dist/tests/testUtils.js +7 -1
  310. package/dist/tests/testUtils.js.map +1 -1
  311. package/dist/tests/textEditUtil.test.js +2 -2
  312. package/dist/tests/textEditUtil.test.js.map +1 -1
  313. package/dist/tests/textRangeCollection.test.d.ts +1 -0
  314. package/dist/tests/textRangeCollection.test.js +137 -0
  315. package/dist/tests/textRangeCollection.test.js.map +1 -0
  316. package/dist/tests/typeCacheUtils.test.d.ts +1 -0
  317. package/dist/tests/typeCacheUtils.test.js +69 -0
  318. package/dist/tests/typeCacheUtils.test.js.map +1 -0
  319. package/dist/tests/typeEvaluator1.test.js +24 -3
  320. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  321. package/dist/tests/typeEvaluator3.test.js +8 -0
  322. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  323. package/dist/tests/typeEvaluator4.test.js +4 -0
  324. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  325. package/dist/tests/typeEvaluator5.test.js +12 -0
  326. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  327. package/dist/tests/typeEvaluator6.test.js +33 -1
  328. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  329. package/dist/tests/typeEvaluator7.test.js +29 -0
  330. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  331. package/dist/tests/typeEvaluator8.test.js +318 -4
  332. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  333. package/dist/tests/typeServer/typeCache.test.d.ts +1 -0
  334. package/dist/tests/typeServer/typeCache.test.js +69 -0
  335. package/dist/tests/typeServer/typeCache.test.js.map +1 -0
  336. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js +18 -0
  337. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js.map +1 -1
  338. package/dist/tests/types.test.d.ts +1 -0
  339. package/dist/{analyzer/parseTreeCleaner.js → tests/types.test.js} +23 -25
  340. package/dist/tests/types.test.js.map +1 -0
  341. package/dist/tests/uri.test.js +51 -0
  342. package/dist/tests/uri.test.js.map +1 -1
  343. package/dist/typeServer/notebookDocumentHandler.d.ts +9 -2
  344. package/dist/typeServer/notebookDocumentHandler.js +16 -6
  345. package/dist/typeServer/notebookDocumentHandler.js.map +1 -1
  346. package/dist/typeServer/programWrapper.d.ts +1 -0
  347. package/dist/typeServer/programWrapper.js +28 -15
  348. package/dist/typeServer/programWrapper.js.map +1 -1
  349. package/dist/typeServer/protocol/tspSupplemental.d.ts +1 -1
  350. package/dist/typeServer/protocol/tspSupplemental.js +2 -2
  351. package/dist/typeServer/server.d.ts +13 -2
  352. package/dist/typeServer/server.js +36 -23
  353. package/dist/typeServer/server.js.map +1 -1
  354. package/dist/typeServer/typeCache.d.ts +8 -4
  355. package/dist/typeServer/typeCache.js +33 -5
  356. package/dist/typeServer/typeCache.js.map +1 -1
  357. package/dist/typeServer/typeEvalUtils.d.ts +2 -1
  358. package/dist/typeServer/typeEvalUtils.js +7 -3
  359. package/dist/typeServer/typeEvalUtils.js.map +1 -1
  360. package/dist/typeServer/typeServerFileSystem.d.ts +10 -9
  361. package/dist/typeServer/typeServerFileSystem.js +16 -12
  362. package/dist/typeServer/typeServerFileSystem.js.map +1 -1
  363. package/package.json +7 -5
  364. package/dist/analyzer/parseTreeCleaner.d.ts +0 -8
  365. package/dist/analyzer/parseTreeCleaner.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sourceEnumerator.js","sourceRoot":"","sources":["../../../../../src/analyzer/sourceEnumerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sourceEnumerator.js","sourceRoot":"","sources":["../../../../../src/analyzer/sourceEnumerator.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,14 @@ import { FileSystem } from '../common/fileSystem';
6
6
  import { LogTracker } from '../common/logTracker';
7
7
  import { ServiceProvider } from '../common/serviceProvider';
8
8
  import '../common/serviceProviderExtensions';
9
+ import * as StringUtils from '../common/stringUtils';
9
10
  import { TextRange } from '../common/textRange';
10
11
  import { TextRangeCollection } from '../common/textRangeCollection';
11
12
  import { Uri } from '../common/uri/uri';
12
- import { ParseFileResults, ParserOutput } from '../parser/parser';
13
+ import { ModuleNode } from '../parser/parseNodes';
14
+ import { ParseFileResults, ParseOptions, ParserOutput } from '../parser/parser';
13
15
  import { ImportLookup } from './analyzerFileInfo';
16
+ import * as AnalyzerNodeInfo from './analyzerNodeInfo';
14
17
  import { CellChainIndexProvider } from './cellChainIndex';
15
18
  import { CircularDependency } from './circularDependency';
16
19
  import { ImportResolver } from './importResolver';
@@ -25,6 +28,8 @@ export declare enum IPythonMode {
25
28
  }
26
29
  export interface SourceFileEditMode {
27
30
  readonly isEditMode: boolean;
31
+ readonly isClonedProgram?: boolean;
32
+ readonly analysisContextOwner?: object;
28
33
  }
29
34
  export declare class SourceFile {
30
35
  readonly serviceProvider: ServiceProvider;
@@ -68,9 +73,9 @@ export declare class SourceFile {
68
73
  getCheckTime(): number | undefined;
69
74
  restore(): string | undefined;
70
75
  didContentsChangeOnDisk(): boolean;
71
- dropParseAndBindInfo(): void;
76
+ dropParseAndBindInfo(): ModuleNode | undefined;
72
77
  markDirty(): void;
73
- markReanalysisRequired(forceRebinding: boolean): void;
78
+ markReanalysisRequired(forceRebinding: boolean, nodeInfoReader: AnalyzerNodeInfo.AnalyzerNodeInfoReader): void;
74
79
  getFileContentsVersion(): number;
75
80
  getClientVersion(): number | undefined;
76
81
  getSemanticVersion(): number;
@@ -99,17 +104,18 @@ export declare class SourceFile {
99
104
  isNoCircularDependencyConfirmed(): boolean;
100
105
  setHitMaxImportDepth(maxImportDepth: number): void;
101
106
  parse(configOptions: ConfigOptions, importResolver: ImportResolver, content?: string): boolean;
102
- bind(configOptions: ConfigOptions, importLookup: ImportLookup, builtinsScope: Scope | undefined, futureImports: Set<string>, cellChainIndex: CellChainIndexProvider | undefined): void;
103
- check(configOptions: ConfigOptions, importLookup: ImportLookup, importResolver: ImportResolver, evaluator: TypeEvaluator, dependentFiles?: ParserOutput[]): void;
107
+ bind(configOptions: ConfigOptions, importLookup: ImportLookup, builtinsScope: Scope | undefined, futureImports: Set<string>, cellChainIndex: CellChainIndexProvider | undefined, nodeInfoContext: AnalyzerNodeInfo.AnalyzerNodeInfoContext): boolean;
108
+ check(configOptions: ConfigOptions, importLookup: ImportLookup, importResolver: ImportResolver, evaluator: TypeEvaluator, dependentFiles: ParserOutput[] | undefined, nodeInfoReader: AnalyzerNodeInfo.AnalyzerNodeInfoReader): void;
104
109
  test_enableIPythonMode(enable: boolean): void;
105
110
  protected createDiagnosticSink(): DiagnosticSink;
106
111
  protected createTextRangeDiagnosticSink(lines: TextRangeCollection<TextRange>): TextRangeDiagnosticSink;
112
+ protected readFileContents(): string;
113
+ protected parseFileContents(fileContents: string, parseOptions: ParseOptions, diagSink: DiagnosticSink, contentHash: StringUtils.StringFingerprint): ParseFileResults;
107
114
  private _makeFileId;
108
115
  private _recomputeDiagnostics;
109
116
  private _cachePreEditState;
110
117
  private _addTaskListDiagnostics;
111
118
  private _buildFileInfo;
112
- private _cleanParseTreeIfRequired;
113
119
  private _resolveImports;
114
120
  private _getPathForLogging;
115
121
  private _parseFile;
@@ -68,7 +68,6 @@ const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
68
68
  const binder_1 = require("./binder");
69
69
  const checker_1 = require("./checker");
70
70
  const CommentUtils = __importStar(require("./commentUtils"));
71
- const parseTreeCleaner_1 = require("./parseTreeCleaner");
72
71
  const testWalker_1 = require("./testWalker");
73
72
  // Limit the number of import cycles tracked per source file.
74
73
  const _maxImportCyclesPerFile = 4;
@@ -98,14 +97,11 @@ class WriteableData {
98
97
  // Number that is incremented every time semantic of the file
99
98
  // might have changed.
100
99
  this.semanticVersion = 0;
101
- // Length and hash of the file the last time it was read from disk.
100
+ // Length and fingerprint of the latest file contents supplied by disk or the client.
102
101
  this.lastFileContentLength = undefined;
103
102
  this.lastFileContentHash = undefined;
104
103
  // Version of file contents that have been analyzed.
105
104
  this.analyzedFileContentsVersion = -1;
106
- // Do we need to walk the parse tree and clean
107
- // the binder information hanging from it?
108
- this.parseTreeNeedsCleaning = false;
109
105
  // Reentrancy check for binding and checking.
110
106
  this.isBindingInProgress = false;
111
107
  this.isCheckingInProgress = false;
@@ -129,6 +125,7 @@ class WriteableData {
129
125
  this.isBindingNeeded = true;
130
126
  // Do we have valid diagnostic results from a checking pass?
131
127
  this.isCheckingNeeded = true;
128
+ this.importInfo = [];
132
129
  // True if the file appears to have been deleted.
133
130
  this.isFileDeleted = false;
134
131
  // Empty
@@ -143,12 +140,11 @@ class WriteableData {
143
140
  isCheckingNeeded=${this.isCheckingNeeded},
144
141
  isFileDeleted=${this.isFileDeleted},
145
142
  hitMaxImportDepth=${this.hitMaxImportDepth},
146
- parseTreeNeedsCleaning=${this.parseTreeNeedsCleaning},
147
143
  fileContentsVersion=${this.fileContentsVersion},
148
144
  analyzedFileContentsVersion=${this.analyzedFileContentsVersion},
149
145
  clientDocumentVersion=${this.clientDocumentVersion},
150
146
  lastFileContentLength=${this.lastFileContentLength},
151
- lastFileContentHash=${this.lastFileContentHash},
147
+ lastFileContentHash=${JSON.stringify(this.lastFileContentHash)},
152
148
  typeIgnoreAll=${this.typeIgnoreAll},
153
149
  imports=${this.imports?.length},
154
150
  builtinsImport=${this.builtinsImport?.importName},
@@ -307,7 +303,7 @@ class SourceFile {
307
303
  if (this._writableData.lastFileContentLength === undefined) {
308
304
  return true;
309
305
  }
310
- // Read in the latest file contents and see if the hash matches
306
+ // Read in the latest file contents and see if the fingerprint matches
311
307
  // that of the previous contents.
312
308
  try {
313
309
  // Read the file's contents.
@@ -316,7 +312,9 @@ class SourceFile {
316
312
  if (fileContents.length !== this._writableData.lastFileContentLength) {
317
313
  return true;
318
314
  }
319
- if (StringUtils.hashString(fileContents) !== this._writableData.lastFileContentHash) {
315
+ const contentHash = StringUtils.getStringFingerprint(fileContents);
316
+ if (!this._writableData.lastFileContentHash ||
317
+ !StringUtils.areStringFingerprintsEqual(contentHash, this._writableData.lastFileContentHash)) {
320
318
  return true;
321
319
  }
322
320
  }
@@ -337,16 +335,19 @@ class SourceFile {
337
335
  // If we are actively binding or checking this file, we can't
338
336
  // safely drop parse and binding info.
339
337
  if (this._writableData.isBindingInProgress || this._writableData.isCheckingInProgress) {
340
- return;
338
+ return undefined;
341
339
  }
342
340
  this._fireFileDirtyEvent();
341
+ const parseTree = this._writableData.parserOutput?.parseTree;
343
342
  this._writableData.parserOutput = undefined;
344
343
  this._writableData.tokenizerLines = undefined;
345
344
  this._writableData.tokenizerOutput = undefined;
346
345
  this._writableData.parsedFileContents = undefined;
346
+ this._writableData.parsedFileContentsHash = undefined;
347
347
  this._writableData.moduleSymbolTable = undefined;
348
348
  this._writableData.isBindingNeeded = true;
349
349
  this._writableData.imports = [];
350
+ return parseTree;
350
351
  }
351
352
  markDirty() {
352
353
  this._writableData.fileContentsVersion++;
@@ -358,7 +359,7 @@ class SourceFile {
358
359
  this._writableData.lineCount = undefined;
359
360
  this._fireFileDirtyEvent();
360
361
  }
361
- markReanalysisRequired(forceRebinding) {
362
+ markReanalysisRequired(forceRebinding, nodeInfoReader) {
362
363
  // Keep the parse info, but reset the analysis to the beginning.
363
364
  this._writableData.semanticVersion++;
364
365
  this._writableData.isCheckingNeeded = true;
@@ -367,12 +368,12 @@ class SourceFile {
367
368
  // we need to rebind because a dependent import may have changed.
368
369
  if (this._writableData.parserOutput) {
369
370
  if (this._writableData.parserOutput.containsWildcardImport ||
370
- AnalyzerNodeInfo.getDunderAllInfo(this._writableData.parserOutput.parseTree) !== undefined ||
371
+ AnalyzerNodeInfo.getDunderAllInfo(this._writableData.parserOutput.parseTree, nodeInfoReader) !==
372
+ undefined ||
371
373
  forceRebinding) {
372
374
  // We don't need to rebuild index data since wildcard
373
375
  // won't affect user file indices. User file indices
374
376
  // don't contain import alias info.
375
- this._writableData.parseTreeNeedsCleaning = true;
376
377
  this._writableData.isBindingNeeded = true;
377
378
  this._writableData.moduleSymbolTable = undefined;
378
379
  }
@@ -412,7 +413,7 @@ class SourceFile {
412
413
  `which exceeds the maximum supported file size of ${exports.maxSourceFileSize}`);
413
414
  throw new Error('File larger than max');
414
415
  }
415
- return this.fileSystem.readFileSync(this._uri, 'utf8');
416
+ return this.readFileContents();
416
417
  }
417
418
  catch (error) {
418
419
  return undefined;
@@ -431,10 +432,11 @@ class SourceFile {
431
432
  else {
432
433
  this._writableData.clientDocumentVersion = version;
433
434
  this._writableData.clientDocumentContents = contents;
434
- const contentsHash = StringUtils.hashString(contents);
435
+ const contentsHash = StringUtils.getStringFingerprint(contents);
435
436
  // Have the contents of the file changed?
436
437
  if (contents.length !== this._writableData.lastFileContentLength ||
437
- contentsHash !== this._writableData.lastFileContentHash) {
438
+ !this._writableData.lastFileContentHash ||
439
+ !StringUtils.areStringFingerprintsEqual(contentsHash, this._writableData.lastFileContentHash)) {
438
440
  this.markDirty();
439
441
  }
440
442
  this._writableData.lastFileContentLength = contents.length;
@@ -473,7 +475,8 @@ class SourceFile {
473
475
  // Otherwise re-tokenize the contents on demand.
474
476
  const tokenizeContents = this._tokenizeContents.bind(this);
475
477
  const parsedFileContents = this._writableData.parsedFileContents;
476
- const contentHash = this._writableData.lastFileContentHash || StringUtils.hashString(this._writableData.parsedFileContents);
478
+ const contentHash = this._writableData.parsedFileContentsHash ??
479
+ StringUtils.getStringFingerprint(this._writableData.parsedFileContents);
477
480
  let tokenizerOutput = this._writableData.tokenizerOutput;
478
481
  return {
479
482
  contentHash,
@@ -531,6 +534,7 @@ class SourceFile {
531
534
  }
532
535
  const diagSink = this.createDiagnosticSink();
533
536
  let fileContents = this.getOpenFileContents();
537
+ let contentHash = fileContents !== undefined ? this._writableData.lastFileContentHash : undefined;
534
538
  if (fileContents === undefined) {
535
539
  try {
536
540
  const startTime = timing_1.timingStats.readFileTime.totalTime;
@@ -540,27 +544,31 @@ class SourceFile {
540
544
  if (fileContents === undefined) {
541
545
  throw new Error("Can't get file content");
542
546
  }
543
- // Remember the length and hash for comparison purposes.
547
+ // Remember the length and fingerprint for comparison purposes.
544
548
  this._writableData.lastFileContentLength = fileContents.length;
545
- this._writableData.lastFileContentHash = StringUtils.hashString(fileContents);
549
+ contentHash = StringUtils.getStringFingerprint(fileContents);
550
+ this._writableData.lastFileContentHash = contentHash;
546
551
  });
547
552
  logState.add(`fs read ${timing_1.timingStats.readFileTime.totalTime - startTime}ms`);
548
553
  }
549
554
  catch (error) {
550
555
  diagSink.addError(`Source file could not be read`, (0, textRange_1.getEmptyRange)());
551
556
  fileContents = '';
557
+ contentHash = StringUtils.getStringFingerprint(fileContents);
552
558
  if (!this.fileSystem.existsSync(this._uri)) {
553
559
  this._writableData.isFileDeleted = true;
554
560
  }
555
561
  }
556
562
  }
557
563
  try {
564
+ contentHash ?? (contentHash = StringUtils.getStringFingerprint(fileContents));
558
565
  // Parse the token stream, building the abstract syntax tree.
559
- const parseFileResults = this._parseFile(configOptions, this._uri, fileContents, this._ipythonMode !== IPythonMode.None, diagSink);
566
+ const parseFileResults = this._parseFile(configOptions, this._uri, fileContents, this._ipythonMode !== IPythonMode.None, diagSink, contentHash);
560
567
  (0, debug_1.assert)(parseFileResults !== undefined && parseFileResults.tokenizerOutput !== undefined);
561
568
  this._writableData.parserOutput = parseFileResults.parserOutput;
562
569
  this._writableData.tokenizerLines = parseFileResults.tokenizerOutput.lines;
563
570
  this._writableData.parsedFileContents = fileContents;
571
+ this._writableData.parsedFileContentsHash = parseFileResults.contentHash;
564
572
  this._writableData.typeIgnoreLines = parseFileResults.tokenizerOutput.typeIgnoreLines;
565
573
  this._writableData.typeIgnoreAll = parseFileResults.tokenizerOutput.typeIgnoreAll;
566
574
  this._writableData.pyrightIgnoreLines = parseFileResults.tokenizerOutput.pyrightIgnoreLines;
@@ -575,6 +583,7 @@ class SourceFile {
575
583
  const importResult = this._resolveImports(importResolver, parseFileResults.parserOutput.importedModules, execEnvironment);
576
584
  this._writableData.imports = importResult.imports;
577
585
  this._writableData.builtinsImport = importResult.builtinsImportResult;
586
+ this._writableData.importInfo = importResult.importInfo;
578
587
  this._writableData.parseDiagnostics = diagSink.fetchAndClear();
579
588
  this._writableData.taskListDiagnostics = [];
580
589
  this._addTaskListDiagnostics(configOptions.taskListTokens, parseFileResults, this._writableData.taskListDiagnostics);
@@ -599,9 +608,12 @@ class SourceFile {
599
608
  }));
600
609
  // Create dummy parse results.
601
610
  this._writableData.parsedFileContents = '';
611
+ this._writableData.parsedFileContentsHash = StringUtils.getStringFingerprint('');
602
612
  this._writableData.tokenizerLines = new textRangeCollection_1.TextRangeCollection([]);
613
+ const parseTree = parseNodes_1.ModuleNode.create({ start: 0, length: 0 });
603
614
  this._writableData.parserOutput = {
604
- parseTree: parseNodes_1.ModuleNode.create({ start: 0, length: 0 }),
615
+ parseTree,
616
+ stringAnnotations: (0, parseNodes_1.getParserStringAnnotationInfo)(parseTree),
605
617
  importedModules: [],
606
618
  futureImports: new Set(),
607
619
  containsWildcardImport: false,
@@ -622,6 +634,7 @@ class SourceFile {
622
634
  };
623
635
  this._writableData.imports = undefined;
624
636
  this._writableData.builtinsImport = undefined;
637
+ this._writableData.importInfo = [];
625
638
  const diagSink = this.createDiagnosticSink();
626
639
  diagSink.addError(localize_1.LocMessage.internalParseError().format({
627
640
  file: this.getUri().toUserVisibleString(),
@@ -635,38 +648,44 @@ class SourceFile {
635
648
  this._writableData.analyzedFileContentsVersion = this._writableData.fileContentsVersion;
636
649
  this._writableData.isBindingNeeded = true;
637
650
  this._writableData.isCheckingNeeded = true;
638
- this._writableData.parseTreeNeedsCleaning = false;
639
651
  this._writableData.hitMaxImportDepth = undefined;
640
652
  this._recomputeDiagnostics(configOptions);
641
653
  return true;
642
654
  });
643
655
  }
644
- bind(configOptions, importLookup, builtinsScope, futureImports, cellChainIndex) {
656
+ bind(configOptions, importLookup, builtinsScope, futureImports, cellChainIndex, nodeInfoContext) {
645
657
  (0, debug_1.assert)(!this.isParseRequired(), 'Bind called before parsing');
646
658
  (0, debug_1.assert)(this.isBindingRequired(), 'Bind called unnecessarily');
647
659
  (0, debug_1.assert)(!this._writableData.isBindingInProgress, 'Bind called while binding in progress');
648
660
  (0, debug_1.assert)(this._writableData.parserOutput !== undefined, 'Parse results not available');
649
661
  return this._logTracker.log(`binding: ${this._getPathForLogging(this._uri)}`, () => {
662
+ let bound = false;
650
663
  try {
651
664
  // Perform name binding.
652
665
  timing_1.timingStats.bindTime.timeOperation(() => {
653
- this._cleanParseTreeIfRequired();
666
+ const parseTree = this._writableData.parserOutput.parseTree;
667
+ const bindingSession = nodeInfoContext.beginWrite(parseTree);
668
+ const nodeInfo = AnalyzerNodeInfo.createAnalyzerNodeInfoAccessor(bindingSession, bindingSession);
669
+ this._writableData.importInfo.forEach((record) => nodeInfo.setImportInfo(record.node, record.importResult));
654
670
  const fileInfo = this._buildFileInfo(configOptions, importLookup, builtinsScope, futureImports);
655
- AnalyzerNodeInfo.setFileInfo(this._writableData.parserOutput.parseTree, fileInfo);
656
- const binder = new binder_1.Binder(fileInfo, configOptions.indexGenerationMode, cellChainIndex);
671
+ nodeInfo.setFileInfo(parseTree, fileInfo);
672
+ const binder = new binder_1.Binder(fileInfo, configOptions.indexGenerationMode, cellChainIndex, nodeInfo);
657
673
  this._writableData.isBindingInProgress = true;
658
- binder.bindModule(this._writableData.parserOutput.parseTree);
674
+ binder.bindModule(parseTree);
675
+ const bindDiagnostics = fileInfo.diagnosticSink.fetchAndClear();
676
+ const moduleScope = nodeInfo.getScope(parseTree);
677
+ (0, debug_1.assert)(moduleScope !== undefined, 'Module scope not returned by binder');
678
+ nodeInfoContext.publish(bindingSession);
679
+ this._writableData.moduleSymbolTable = moduleScope.symbolTable;
680
+ this._writableData.bindDiagnostics = bindDiagnostics;
659
681
  // If we're in "test mode" (used for unit testing), run an additional
660
682
  // "test walker" over the parse tree to validate its internal consistency.
661
683
  if (configOptions.internalTestMode) {
662
684
  const testWalker = new testWalker_1.TestWalker();
663
685
  testWalker.walk(this._writableData.parserOutput.parseTree);
664
686
  }
665
- this._writableData.bindDiagnostics = fileInfo.diagnosticSink.fetchAndClear();
666
- const moduleScope = AnalyzerNodeInfo.getScope(this._writableData.parserOutput.parseTree);
667
- (0, debug_1.assert)(moduleScope !== undefined, 'Module scope not returned by binder');
668
- this._writableData.moduleSymbolTable = moduleScope.symbolTable;
669
687
  });
688
+ bound = true;
670
689
  }
671
690
  catch (e) {
672
691
  const message = (e.stack ? e.stack.toString() : undefined) ||
@@ -689,12 +708,13 @@ class SourceFile {
689
708
  this._writableData.isBindingInProgress = false;
690
709
  }
691
710
  // Prepare for the next stage of the analysis.
692
- this._writableData.isCheckingNeeded = true;
711
+ this._writableData.isCheckingNeeded = bound;
693
712
  this._writableData.isBindingNeeded = false;
694
713
  this._recomputeDiagnostics(configOptions);
714
+ return bound;
695
715
  });
696
716
  }
697
- check(configOptions, importLookup, importResolver, evaluator, dependentFiles) {
717
+ check(configOptions, importLookup, importResolver, evaluator, dependentFiles, nodeInfoReader) {
698
718
  (0, debug_1.assert)(!this.isParseRequired(), `Check called before parsing: state=${this._writableData.debugPrint()}`);
699
719
  (0, debug_1.assert)(!this.isBindingRequired(), `Check called before binding: state=${this._writableData.debugPrint()}`);
700
720
  (0, debug_1.assert)(!this._writableData.isBindingInProgress, 'Check called while binding in progress');
@@ -705,11 +725,12 @@ class SourceFile {
705
725
  try {
706
726
  timing_1.timingStats.typeCheckerTime.timeOperation(() => {
707
727
  const checkDuration = new timing_1.Duration();
708
- const checker = new checker_1.Checker(importResolver, evaluator, this._writableData.parserOutput, dependentFiles);
728
+ const nodeInfo = AnalyzerNodeInfo.createAnalyzerNodeInfoAccessor(nodeInfoReader);
729
+ const checker = new checker_1.Checker(importResolver, evaluator, this._writableData.parserOutput, dependentFiles, nodeInfo);
709
730
  this._writableData.isCheckingInProgress = true;
710
731
  checker.check();
711
732
  this._writableData.isCheckingNeeded = false;
712
- const fileInfo = AnalyzerNodeInfo.getFileInfo(this._writableData.parserOutput.parseTree);
733
+ const fileInfo = nodeInfo.getFileInfo(this._writableData.parserOutput.parseTree);
713
734
  this._writableData.checkerDiagnostics = fileInfo.diagnosticSink.fetchAndClear();
714
735
  this._writableData.checkTime = checkDuration.getDurationInMilliseconds();
715
736
  });
@@ -754,6 +775,12 @@ class SourceFile {
754
775
  createTextRangeDiagnosticSink(lines) {
755
776
  return new diagnosticSink_1.TextRangeDiagnosticSink(lines);
756
777
  }
778
+ readFileContents() {
779
+ return this.fileSystem.readFileSync(this._uri, 'utf8');
780
+ }
781
+ parseFileContents(fileContents, parseOptions, diagSink, contentHash) {
782
+ return new parser_1.Parser().parseSourceFile(fileContents, parseOptions, diagSink, contentHash);
783
+ }
757
784
  // Creates a short string that can be used to uniquely identify
758
785
  // this file from all other files. It is used in the type evaluator
759
786
  // to distinguish between types that are defined in different files
@@ -1072,17 +1099,9 @@ class SourceFile {
1072
1099
  };
1073
1100
  return fileInfo;
1074
1101
  }
1075
- _cleanParseTreeIfRequired() {
1076
- if (this._writableData.parserOutput) {
1077
- if (this._writableData.parseTreeNeedsCleaning) {
1078
- const cleanerWalker = new parseTreeCleaner_1.ParseTreeCleanerWalker(this._writableData.parserOutput.parseTree);
1079
- cleanerWalker.clean();
1080
- this._writableData.parseTreeNeedsCleaning = false;
1081
- }
1082
- }
1083
- }
1084
1102
  _resolveImports(importResolver, moduleImports, execEnv) {
1085
1103
  const imports = [];
1104
+ const importInfo = [];
1086
1105
  const resolveAndAddIfNotSelf = (nameParts, skipMissingImport = false) => {
1087
1106
  const importResult = importResolver.resolveImport(this._uri, execEnv, {
1088
1107
  leadingDots: 0,
@@ -1121,7 +1140,7 @@ class SourceFile {
1121
1140
  // name node in the parse tree so we can access it later
1122
1141
  // (for hover and definition support).
1123
1142
  if (moduleImport.nameParts.length === moduleImport.nameNode.d.nameParts.length) {
1124
- AnalyzerNodeInfo.setImportInfo(moduleImport.nameNode, importResult);
1143
+ importInfo.push({ node: moduleImport.nameNode, importResult });
1125
1144
  }
1126
1145
  else {
1127
1146
  // For implicit imports of higher-level modules within a multi-part
@@ -1130,18 +1149,22 @@ class SourceFile {
1130
1149
  // case, store the import info on the name part node.
1131
1150
  (0, debug_1.assert)(moduleImport.nameParts.length > 0);
1132
1151
  (0, debug_1.assert)(moduleImport.nameParts.length - 1 < moduleImport.nameNode.d.nameParts.length);
1133
- AnalyzerNodeInfo.setImportInfo(moduleImport.nameNode.d.nameParts[moduleImport.nameParts.length - 1], importResult);
1152
+ importInfo.push({
1153
+ node: moduleImport.nameNode.d.nameParts[moduleImport.nameParts.length - 1],
1154
+ importResult,
1155
+ });
1134
1156
  }
1135
1157
  }
1136
1158
  return {
1137
1159
  imports,
1138
1160
  builtinsImportResult,
1161
+ importInfo,
1139
1162
  };
1140
1163
  }
1141
1164
  _getPathForLogging(fileUri) {
1142
1165
  return (0, logTracker_1.getPathForLogging)(this.fileSystem, fileUri);
1143
1166
  }
1144
- _parseFile(configOptions, fileUri, fileContents, useNotebookMode, diagSink) {
1167
+ _parseFile(configOptions, fileUri, fileContents, useNotebookMode, diagSink, contentHash) {
1145
1168
  // Use the configuration options to determine the environment zin which
1146
1169
  // this source file will be executed.
1147
1170
  const execEnvironment = configOptions.findExecEnvironment(fileUri);
@@ -1153,8 +1176,7 @@ class SourceFile {
1153
1176
  parseOptions.pythonVersion = execEnvironment.pythonVersion;
1154
1177
  parseOptions.skipFunctionAndClassBody = configOptions.indexGenerationMode ?? false;
1155
1178
  // Parse the token stream, building the abstract syntax tree.
1156
- const parser = new parser_1.Parser();
1157
- return parser.parseSourceFile(fileContents, parseOptions, diagSink);
1179
+ return this.parseFileContents(fileContents, parseOptions, diagSink, contentHash);
1158
1180
  }
1159
1181
  _tokenizeContents(fileContents, contentHash) {
1160
1182
  const tokenizer = new tokenizer_1.Tokenizer();
@@ -1162,7 +1184,8 @@ class SourceFile {
1162
1184
  // When the file is open, cache the tokenizer results.
1163
1185
  // Because the tokenizer is lazy, ensure that the state remains unchanged before caching its output.
1164
1186
  if (this._writableData.clientDocumentContents !== undefined &&
1165
- this._writableData.lastFileContentHash === contentHash) {
1187
+ this._writableData.lastFileContentHash &&
1188
+ StringUtils.areStringFingerprintsEqual(this._writableData.lastFileContentHash, contentHash)) {
1166
1189
  this._writableData.tokenizerOutput = output;
1167
1190
  // Replace the existing tokenizerLines with the newly-returned
1168
1191
  // version. They should have the same contents, but we want to use