@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
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ /*
3
+ * symlinkAliasInvalidation.test.ts
4
+ *
5
+ * Regression tests for stale diagnostics across filesystem symlink aliases.
6
+ *
7
+ * A filesystem symlink and its target are tracked as two independent
8
+ * SourceFileInfo entries (the source-file map is keyed by uri.key, with no
9
+ * realpath/inode dedup). When a change is routed to one alias (e.g. the fs
10
+ * watcher fires for the real target path after an editor save/undo), the other
11
+ * alias — and any consumer that imported *that* alias — must also be
12
+ * invalidated. Invalidation recurses only through `importedBy`, so without an
13
+ * explicit realpath-twin bridge the consumer is never re-checked, its
14
+ * diagnostics are never recomputed, and a stale diagnostic persists until the
15
+ * file is manually edited.
16
+ *
17
+ * The twin must be invalidated at the CONTENT level (markDirty -> re-parse from
18
+ * disk), not merely re-check-required: otherwise it keeps its cached symbol
19
+ * table and the consumer re-resolves against stale symbols.
20
+ */
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const assert_1 = __importDefault(require("assert"));
26
+ const uri_1 = require("../common/uri/uri");
27
+ const testState_1 = require("./harness/fourslash/testState");
28
+ // Consumer imports the symbol from the SYMLINK twin; a change routed to the real
29
+ // target must still re-check it.
30
+ const consumerOfTwin = `
31
+ // @filename: linked/__init__.py
32
+ //// # package marker
33
+
34
+ // @filename: linked/shared.py
35
+ //// class SharedType:
36
+ //// pass
37
+
38
+ // @filename: consumer.py
39
+ //// from linked.shared_link import SharedType
40
+ //// x = SharedType()
41
+ `;
42
+ // Consumer imports the symbol from the REAL target; a change routed to the
43
+ // symlink twin must still re-check it (reverse direction).
44
+ const consumerOfTarget = `
45
+ // @filename: linked/__init__.py
46
+ //// # package marker
47
+
48
+ // @filename: linked/shared.py
49
+ //// class SharedType:
50
+ //// pass
51
+
52
+ // @filename: consumer.py
53
+ //// from linked.shared import SharedType
54
+ //// x = SharedType()
55
+ `;
56
+ const removedTargetContent = 'class RenamedType:\n pass\n';
57
+ test('symlink twin invalidation clears stale diagnostics on the consumer of the twin', () => {
58
+ const state = (0, testState_1.parseAndGetTestState)(consumerOfTwin, '/proj').state;
59
+ const provider = state.serviceProvider;
60
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
61
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
62
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
63
+ // shared_link.py is a symlink to shared.py, so it resolves to the same
64
+ // realpath and exposes the same symbols.
65
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
66
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]);
67
+ state.analyze();
68
+ // Baseline: SharedType exists via the symlink twin, so the consumer is clean.
69
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
70
+ // Capture the twin's content version so we can assert it advances (i.e. the
71
+ // twin is invalidated at the CONTENT level, not merely re-check-required).
72
+ const twinVersionBefore = state.program.getSourceFile(linkUri).getFileContentsVersion();
73
+ // Rewrite the backing file to remove SharedType (as an editor save/undo would).
74
+ // Because shared_link.py is a symlink to shared.py, reading the twin now yields
75
+ // the new content too.
76
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
77
+ // Simulate the fs watcher firing for the real target path only.
78
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false);
79
+ state.analyze();
80
+ // The twin's content version must advance: co-invalidation calls markDirty on
81
+ // the twin, which re-parses it from disk. If a future refactor downgrades this
82
+ // to re-check-only, the version would stay put and this guard would fail.
83
+ assert_1.default.ok(state.program.getSourceFile(linkUri).getFileContentsVersion() > twinVersionBefore, 'Expected the symlink twin fileContentsVersion to advance after co-invalidation');
84
+ // The consumer imported `linked.shared_link` (the twin), which no longer
85
+ // exposes SharedType. Its stale "clean" diagnostics must be recomputed to the
86
+ // exact unresolved-import error. The exact message (rather than a substring)
87
+ // also guards against a future refactor that downgrades twin invalidation to
88
+ // re-check-only, which would leave the twin's cached symbol table intact and
89
+ // produce no error at all.
90
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]);
91
+ });
92
+ test('symlink target invalidation clears stale diagnostics on the consumer of the real target', () => {
93
+ const state = (0, testState_1.parseAndGetTestState)(consumerOfTarget, '/proj').state;
94
+ const provider = state.serviceProvider;
95
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
96
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
97
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
98
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
99
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]);
100
+ state.analyze();
101
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
102
+ // Rewrite the backing file, then route the change to the SYMLINK twin only.
103
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
104
+ state.program.markFilesDirty([linkUri], /* evenIfContentsAreSame */ false);
105
+ state.analyze();
106
+ // The consumer imported `linked.shared` (the real target); marking the twin
107
+ // dirty must bridge back to the target and re-check the consumer.
108
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]);
109
+ });
110
+ test('non-symlinked files do not spuriously invalidate unrelated consumers', () => {
111
+ // Two distinct real modules (no symlink). Changing one must not re-check a
112
+ // consumer of the other — guards against over-broad alias invalidation.
113
+ const code = `
114
+ // @filename: pkg/__init__.py
115
+ //// # package marker
116
+
117
+ // @filename: pkg/a.py
118
+ //// class AType:
119
+ //// pass
120
+
121
+ // @filename: pkg/b.py
122
+ //// class BType:
123
+ //// pass
124
+
125
+ // @filename: consumer.py
126
+ //// from pkg.b import BType
127
+ //// y = BType()
128
+ `;
129
+ const state = (0, testState_1.parseAndGetTestState)(code, '/proj').state;
130
+ const provider = state.serviceProvider;
131
+ const aUri = uri_1.Uri.file('/proj/pkg/a.py', provider);
132
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
133
+ state.analyze();
134
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
135
+ // Change an unrelated module and mark it dirty.
136
+ state.testFS.writeFileSync(aUri, 'class ARenamed:\n pass\n');
137
+ state.program.markFilesDirty([aUri], /* evenIfContentsAreSame */ false);
138
+ state.analyze();
139
+ // Consumer of pkg.b is unaffected.
140
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
141
+ });
142
+ test('closing a symlink alias co-invalidates the twin so its consumer is re-checked', () => {
143
+ // Exercises the setFileClosed entrypoint (not just markFilesDirty). The
144
+ // consumer imports the symlink twin; the real target is open and then closed
145
+ // after its backing file changed on disk. setFileClosed must bridge to the
146
+ // twin (same realpath) and re-check the twin's consumer.
147
+ const state = (0, testState_1.parseAndGetTestState)(consumerOfTwin, '/proj').state;
148
+ const provider = state.serviceProvider;
149
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
150
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
151
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
152
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
153
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]);
154
+ // Open the real target as an editor document, then analyze.
155
+ state.program.setFileOpened(sharedUri, 1, 'class SharedType:\n pass\n');
156
+ state.analyze();
157
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
158
+ // The backing file changes on disk (rename/undo save), then the target
159
+ // document is closed. Closing must co-invalidate the symlink twin.
160
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
161
+ state.program.setFileClosed(sharedUri);
162
+ state.analyze();
163
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]);
164
+ });
165
+ test('open-content invalidation (evenIfContentsAreSame) still bridges symlink twins when disk changed', () => {
166
+ // The open-document update path calls markFilesDirty(evenIfContentsAreSame=true).
167
+ // When the backing file actually changed on disk, twin co-invalidation must
168
+ // still fire, and unrelated files must not be dragged in.
169
+ const code = `
170
+ // @filename: linked/__init__.py
171
+ //// # package marker
172
+
173
+ // @filename: linked/shared.py
174
+ //// class SharedType:
175
+ //// pass
176
+
177
+ // @filename: unrelated.py
178
+ //// value = 1
179
+
180
+ // @filename: consumer.py
181
+ //// from linked.shared_link import SharedType
182
+ //// x = SharedType()
183
+ `;
184
+ const state = (0, testState_1.parseAndGetTestState)(code, '/proj').state;
185
+ const provider = state.serviceProvider;
186
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
187
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
188
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
189
+ const unrelatedUri = uri_1.Uri.file('/proj/unrelated.py', provider);
190
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
191
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri, unrelatedUri]);
192
+ state.analyze();
193
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
194
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, unrelatedUri), []);
195
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
196
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ true);
197
+ state.analyze();
198
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]);
199
+ // The unrelated file (not a realpath alias) must remain clean.
200
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, unrelatedUri), []);
201
+ });
202
+ test('an in-memory open edit (evenIfContentsAreSame, no disk change) does not re-check the twin', () => {
203
+ // Regression for over-invalidation: updateOpenFileContents calls
204
+ // markFilesDirty(evenIfContentsAreSame=true) on every keystroke. Twin fan-out
205
+ // must NOT force the other alias (and its importer subtree) to be re-checked
206
+ // when the twin's on-disk contents are unchanged, otherwise every keystroke on
207
+ // one alias triggers a full recheck of the other alias's dependents.
208
+ const code = `
209
+ // @filename: linked/__init__.py
210
+ //// # package marker
211
+
212
+ // @filename: linked/shared.py
213
+ //// class SharedType:
214
+ //// pass
215
+
216
+ // @filename: consumer.py
217
+ //// from linked.shared_link import SharedType
218
+ //// x = SharedType()
219
+ `;
220
+ const state = (0, testState_1.parseAndGetTestState)(code, '/proj').state;
221
+ const provider = state.serviceProvider;
222
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
223
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
224
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
225
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
226
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]);
227
+ // Open the real target as an editor document, then analyze so everything is clean.
228
+ state.program.setFileOpened(sharedUri, 1, 'class SharedType:\n pass\n');
229
+ state.analyze();
230
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
231
+ // Simulate a keystroke: the open document's in-memory contents change but the
232
+ // backing file on disk does NOT. This is exactly what updateOpenFileContents
233
+ // does (markFilesDirty with evenIfContentsAreSame=true).
234
+ state.program.setFileOpened(sharedUri, 2, 'class SharedType:\n pass\n# edit\n');
235
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ true);
236
+ // The edited (open) file itself needs re-checking, but the twin alias must not
237
+ // have been dragged in, since its on-disk contents are unchanged.
238
+ const linkInfo = state.program.getSourceFileInfo(linkUri);
239
+ const consumerInfo = state.program.getSourceFileInfo(consumerUri);
240
+ assert_1.default.ok(linkInfo, 'expected twin alias to be tracked');
241
+ assert_1.default.ok(consumerInfo, 'expected twin consumer to be tracked');
242
+ assert_1.default.strictEqual(linkInfo.sourceFile.isCheckingRequired(), false, 'twin alias must not be re-checked on an in-memory-only edit');
243
+ assert_1.default.strictEqual(consumerInfo.sourceFile.isCheckingRequired(), false, "twin's consumer must not be re-checked on an in-memory-only edit");
244
+ });
245
+ test('a 3+ member symlink group fans out to every alias consumer', () => {
246
+ // Two symlinks to one target, with a distinct consumer per symlink. A change
247
+ // routed to the target must re-check BOTH alias consumers — exercises the
248
+ // multi-entry aliasKeys fan-out (not just a 2-member group).
249
+ const code = `
250
+ // @filename: linked/__init__.py
251
+ //// # package marker
252
+
253
+ // @filename: linked/shared.py
254
+ //// class SharedType:
255
+ //// pass
256
+
257
+ // @filename: consumer1.py
258
+ //// from linked.link1 import SharedType
259
+ //// a = SharedType()
260
+
261
+ // @filename: consumer2.py
262
+ //// from linked.link2 import SharedType
263
+ //// b = SharedType()
264
+ `;
265
+ const state = (0, testState_1.parseAndGetTestState)(code, '/proj').state;
266
+ const provider = state.serviceProvider;
267
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
268
+ const link1Uri = uri_1.Uri.file('/proj/linked/link1.py', provider);
269
+ const link2Uri = uri_1.Uri.file('/proj/linked/link2.py', provider);
270
+ const consumer1Uri = uri_1.Uri.file('/proj/consumer1.py', provider);
271
+ const consumer2Uri = uri_1.Uri.file('/proj/consumer2.py', provider);
272
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/link1.py');
273
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/link2.py');
274
+ state.program.addTrackedFiles([sharedUri, link1Uri, link2Uri, consumer1Uri, consumer2Uri]);
275
+ state.analyze();
276
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer1Uri), []);
277
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer2Uri), []);
278
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
279
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false);
280
+ state.analyze();
281
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer1Uri), [unknownImportError('SharedType')]);
282
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer2Uri), [unknownImportError('SharedType')]);
283
+ });
284
+ test('multiple consumers of the same twin are all re-checked', () => {
285
+ const code = `
286
+ // @filename: linked/__init__.py
287
+ //// # package marker
288
+
289
+ // @filename: linked/shared.py
290
+ //// class SharedType:
291
+ //// pass
292
+
293
+ // @filename: consumer1.py
294
+ //// from linked.shared_link import SharedType
295
+ //// a = SharedType()
296
+
297
+ // @filename: consumer2.py
298
+ //// from linked.shared_link import SharedType
299
+ //// b = SharedType()
300
+ `;
301
+ const state = (0, testState_1.parseAndGetTestState)(code, '/proj').state;
302
+ const provider = state.serviceProvider;
303
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
304
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
305
+ const consumer1Uri = uri_1.Uri.file('/proj/consumer1.py', provider);
306
+ const consumer2Uri = uri_1.Uri.file('/proj/consumer2.py', provider);
307
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
308
+ state.program.addTrackedFiles([sharedUri, linkUri, consumer1Uri, consumer2Uri]);
309
+ state.analyze();
310
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer1Uri), []);
311
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer2Uri), []);
312
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
313
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false);
314
+ state.analyze();
315
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer1Uri), [unknownImportError('SharedType')]);
316
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumer2Uri), [unknownImportError('SharedType')]);
317
+ });
318
+ test('two independent symlink groups do not cross-invalidate', () => {
319
+ const code = `
320
+ // @filename: pkg/__init__.py
321
+ //// # package marker
322
+
323
+ // @filename: pkg/a.py
324
+ //// class TypeA:
325
+ //// pass
326
+
327
+ // @filename: pkg/b.py
328
+ //// class TypeB:
329
+ //// pass
330
+
331
+ // @filename: consumerA.py
332
+ //// from pkg.a_link import TypeA
333
+ //// a = TypeA()
334
+
335
+ // @filename: consumerB.py
336
+ //// from pkg.b_link import TypeB
337
+ //// b = TypeB()
338
+ `;
339
+ const state = (0, testState_1.parseAndGetTestState)(code, '/proj').state;
340
+ const provider = state.serviceProvider;
341
+ const aUri = uri_1.Uri.file('/proj/pkg/a.py', provider);
342
+ const bUri = uri_1.Uri.file('/proj/pkg/b.py', provider);
343
+ const aLinkUri = uri_1.Uri.file('/proj/pkg/a_link.py', provider);
344
+ const bLinkUri = uri_1.Uri.file('/proj/pkg/b_link.py', provider);
345
+ const consumerAUri = uri_1.Uri.file('/proj/consumerA.py', provider);
346
+ const consumerBUri = uri_1.Uri.file('/proj/consumerB.py', provider);
347
+ state.testFS.symlinkSync('/proj/pkg/a.py', '/proj/pkg/a_link.py');
348
+ state.testFS.symlinkSync('/proj/pkg/b.py', '/proj/pkg/b_link.py');
349
+ state.program.addTrackedFiles([aUri, bUri, aLinkUri, bLinkUri, consumerAUri, consumerBUri]);
350
+ state.analyze();
351
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerAUri), []);
352
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerBUri), []);
353
+ // Change group A's target only.
354
+ state.testFS.writeFileSync(aUri, 'class RenamedA:\n pass\n');
355
+ state.program.markFilesDirty([aUri], /* evenIfContentsAreSame */ false);
356
+ state.analyze();
357
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerAUri), [unknownImportError('TypeA')]);
358
+ // Group B is a different realpath group and must stay clean.
359
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerBUri), []);
360
+ });
361
+ test('alias index survives file removal and re-add', () => {
362
+ // Exercises _unindexRealpathAlias (on removal) and re-indexing (on re-add):
363
+ // after the alias group is torn down and rebuilt, co-invalidation must still
364
+ // work and no stale index entry may misdirect invalidation.
365
+ const state = (0, testState_1.parseAndGetTestState)(consumerOfTwin, '/proj').state;
366
+ const provider = state.serviceProvider;
367
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
368
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
369
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
370
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
371
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]);
372
+ state.analyze();
373
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
374
+ // Tear down: untrack everything so _removeUnneededFiles evicts the files
375
+ // (and _unindexRealpathAlias runs for the symlink group).
376
+ state.program.setTrackedFiles([]);
377
+ state.analyze();
378
+ assert_1.default.strictEqual(state.program.getSourceFileInfo(linkUri), undefined, 'Expected the symlink twin to be removed from the program after untracking');
379
+ // Re-add the same files; the alias index must be rebuilt from scratch.
380
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]);
381
+ state.analyze();
382
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
383
+ // Co-invalidation must work again against the rebuilt index.
384
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
385
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false);
386
+ state.analyze();
387
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]);
388
+ });
389
+ test('a twin first seen as an untracked import is indexed once it becomes tracked', () => {
390
+ // Ordering gap: the symlink twin is discovered first via import resolution
391
+ // (untracked -> skipped by the user-code-only index), then later tracked. The
392
+ // tracked-flip must (re-)index it so co-invalidation applies.
393
+ const state = (0, testState_1.parseAndGetTestState)(consumerOfTwin, '/proj').state;
394
+ const provider = state.serviceProvider;
395
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
396
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
397
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
398
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
399
+ // Track only the target + consumer. The twin (shared_link.py) is pulled in as
400
+ // an untracked referenced import during analysis.
401
+ state.program.addTrackedFiles([sharedUri, consumerUri]);
402
+ state.analyze();
403
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
404
+ // Now the twin becomes tracked (e.g. enumeration catches up / it is opened).
405
+ state.program.setTrackedFiles([sharedUri, linkUri, consumerUri]);
406
+ state.analyze();
407
+ // Route a change to the real target; the now-tracked twin must be bridged.
408
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
409
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false);
410
+ state.analyze();
411
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]);
412
+ });
413
+ test('re-adding only the realpath target rebuilds the alias group', () => {
414
+ // Comment-2 scenario: remove ONLY the realpath target (leaving the symlink
415
+ // twin tracked), then re-add ONLY the target. The alias group must be
416
+ // rebuilt so co-invalidation through the twin keeps working.
417
+ const state = (0, testState_1.parseAndGetTestState)(consumerOfTwin, '/proj').state;
418
+ const provider = state.serviceProvider;
419
+ const sharedUri = uri_1.Uri.file('/proj/linked/shared.py', provider);
420
+ const linkUri = uri_1.Uri.file('/proj/linked/shared_link.py', provider);
421
+ const consumerUri = uri_1.Uri.file('/proj/consumer.py', provider);
422
+ state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py');
423
+ state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]);
424
+ state.analyze();
425
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
426
+ // Untrack only the realpath target; the symlink twin + consumer stay tracked.
427
+ state.program.setTrackedFiles([linkUri, consumerUri]);
428
+ state.analyze();
429
+ assert_1.default.strictEqual(state.program.getSourceFileInfo(sharedUri), undefined, 'Expected the realpath target to be removed from the program after untracking it');
430
+ // Re-add only the realpath target. The alias group (still holding the twin)
431
+ // must be rebuilt to include the target again.
432
+ state.program.setTrackedFiles([sharedUri, linkUri, consumerUri]);
433
+ state.analyze();
434
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), []);
435
+ // Co-invalidation must work again through the rebuilt group.
436
+ state.testFS.writeFileSync(sharedUri, removedTargetContent);
437
+ state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false);
438
+ state.analyze();
439
+ assert_1.default.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]);
440
+ });
441
+ test('an alias whose realpath target is never indexed does not leak a stale group on removal', () => {
442
+ // A symlink whose resolved target is never added (e.g. it resolves outside
443
+ // the workspace) seeds the alias group with the unindexed target key.
444
+ // Removing the alias must drop the group entirely rather than leaving a
445
+ // permanent one-entry remnant behind that accumulates over a long session.
446
+ const state = (0, testState_1.parseAndGetTestState)(consumerOfTwin, '/proj').state;
447
+ const provider = state.serviceProvider;
448
+ const unindexedTargetUri = uri_1.Uri.file('/proj/linked/ext_real.py', provider);
449
+ const aliasUri = uri_1.Uri.file('/proj/linked/ext_link.py', provider);
450
+ // ext_link.py is a symlink to a file that is never tracked or imported, so
451
+ // only the alias is indexed while its realpath target remains unindexed.
452
+ state.testFS.writeFileSync(unindexedTargetUri, 'value = 1\n');
453
+ state.testFS.symlinkSync('/proj/linked/ext_real.py', '/proj/linked/ext_link.py');
454
+ state.program.addTrackedFiles([aliasUri]);
455
+ state.analyze();
456
+ const aliasMap = state.program._realpathAliasMap;
457
+ assert_1.default.strictEqual(aliasMap.size, 1, 'Expected the alias to seed a realpath group while tracked');
458
+ // Untracking the alias must not leave a lingering realpath group behind,
459
+ // since the only remaining key is the never-indexed target seed.
460
+ state.program.setTrackedFiles([]);
461
+ state.analyze();
462
+ assert_1.default.strictEqual(aliasMap.size, 0, 'Expected no lingering realpath alias group after removing an alias whose target was never indexed');
463
+ });
464
+ function unknownImportError(name) {
465
+ return `"${name}" is unknown import symbol`;
466
+ }
467
+ function errorMessagesOn(state, uri) {
468
+ const diags = state.program.getSourceFile(uri).getDiagnostics(state.configOptions) ?? [];
469
+ return diags.filter((d) => d.category === 0 /* DiagnosticCategory.Error */).map((d) => d.message);
470
+ }
471
+ //# sourceMappingURL=symlinkAliasInvalidation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symlinkAliasInvalidation.test.js","sourceRoot":"","sources":["../../../../../src/tests/symlinkAliasInvalidation.test.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;AAEH,oDAA4B;AAG5B,2CAAwC;AACxC,6DAAgF;AAEhF,iFAAiF;AACjF,iCAAiC;AACjC,MAAM,cAAc,GAAG;;;;;;;;;;;CAWtB,CAAC;AAEF,2EAA2E;AAC3E,2DAA2D;AAC3D,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAE9D,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;IACxF,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,uEAAuE;IACvE,yCAAyC;IACzC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,8EAA8E;IAC9E,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,sBAAsB,EAAE,CAAC;IAEzF,gFAAgF;IAChF,gFAAgF;IAChF,uBAAuB;IACvB,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAE5D,gEAAgE;IAChE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC7E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,8EAA8E;IAC9E,+EAA+E;IAC/E,0EAA0E;IAC1E,gBAAM,CAAC,EAAE,CACL,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,sBAAsB,EAAE,GAAG,iBAAiB,EAClF,gFAAgF,CACnF,CAAC;IAEF,yEAAyE;IACzE,8EAA8E;IAC9E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,2BAA2B;IAC3B,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yFAAyF,EAAE,GAAG,EAAE;IACjG,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,4EAA4E;IAC5E,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC3E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,4EAA4E;IAC5E,kEAAkE;IAClE,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;IAC9E,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;CAehB,CAAC;IACE,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,IAAI,GAAG,SAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,gDAAgD;IAChD,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;IAChE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACxE,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,mCAAmC;IACnC,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+EAA+E,EAAE,GAAG,EAAE;IACvF,wEAAwE;IACxE,6EAA6E;IAC7E,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,4DAA4D;IAC5D,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;IAC3E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,uEAAuE;IACvE,mEAAmE;IACnE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iGAAiG,EAAE,GAAG,EAAE;IACzG,kFAAkF;IAClF,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,IAAI,GAAG;;;;;;;;;;;;;;CAchB,CAAC;IACE,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,SAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAE9D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC5E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChG,+DAA+D;IAC/D,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2FAA2F,EAAE,GAAG,EAAE;IACnG,iEAAiE;IACjE,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,qEAAqE;IACrE,MAAM,IAAI,GAAG;;;;;;;;;;;CAWhB,CAAC;IACE,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,mFAAmF;IACnF,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;IAC3E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,8EAA8E;IAC9E,6EAA6E;IAC7E,yDAAyD;IACzD,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,uCAAuC,CAAC,CAAC;IACnF,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAE5E,+EAA+E;IAC/E,kEAAkE;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAClE,gBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;IACzD,gBAAM,CAAC,EAAE,CAAC,YAAY,EAAE,sCAAsC,CAAC,CAAC;IAChE,gBAAM,CAAC,WAAW,CACd,QAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,EACzC,KAAK,EACL,6DAA6D,CAChE,CAAC;IACF,gBAAM,CAAC,WAAW,CACd,YAAa,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAC7C,KAAK,EACL,kEAAkE,CACrE,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACpE,6EAA6E;IAC7E,0EAA0E;IAC1E,6DAA6D;IAC7D,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;CAehB,CAAC;IACE,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,SAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,SAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,SAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,SAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAE9D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CAAC;IAC5E,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CAAC;IAE5E,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3F,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC7E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjG,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACrG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAChE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;CAehB,CAAC;IACE,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,SAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,SAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAE9D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAClF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC7E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjG,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACrG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAChE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;CAmBhB,CAAC;IACE,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,IAAI,GAAG,SAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,SAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,SAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,SAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,SAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,SAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAE9D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAClE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAElE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5F,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,gCAAgC;IAChC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;IAChE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACxE,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5F,6DAA6D;IAC7D,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACtD,4EAA4E;IAC5E,6EAA6E;IAC7E,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,yEAAyE;IACzE,0DAA0D;IAC1D,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,WAAW,CACd,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EACxC,SAAS,EACT,2EAA2E,CAC9E,CAAC;IAEF,uEAAuE;IACvE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,6DAA6D;IAC7D,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC7E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACrF,2EAA2E;IAC3E,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,8EAA8E;IAC9E,kDAAkD;IAClD,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,6EAA6E;IAC7E,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,2EAA2E;IAC3E,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC7E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACrE,2EAA2E;IAC3E,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,SAAS,GAAG,SAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;IAElF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,8EAA8E;IAC9E,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,WAAW,CACd,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAC1C,SAAS,EACT,iFAAiF,CACpF,CAAC;IAEF,4EAA4E;IAC5E,+CAA+C;IAC/C,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhE,6DAA6D;IAC7D,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC7E,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wFAAwF,EAAE,GAAG,EAAE;IAChG,2EAA2E;IAC3E,sEAAsE;IACtE,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,KAAK,GAAG,IAAA,gCAAoB,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvC,MAAM,kBAAkB,GAAG,SAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,SAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IAEhE,2EAA2E;IAC3E,yEAAyE;IACzE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAC9D,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,CAAC;IAEjF,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,MAAM,QAAQ,GAAI,KAAK,CAAC,OAAe,CAAC,iBAA6C,CAAC;IACtF,gBAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,2DAA2D,CAAC,CAAC;IAElG,yEAAyE;IACzE,iEAAiE;IACjE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,gBAAM,CAAC,WAAW,CACd,QAAQ,CAAC,IAAI,EACb,CAAC,EACD,mGAAmG,CACtG,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,IAAY;IACpC,OAAO,IAAI,IAAI,4BAA4B,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,KAAgB,EAAE,GAAQ;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAE,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC1F,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,qCAA6B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9F,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Program } from '../analyzer/program';
2
+ import { Scope } from '../analyzer/scope';
2
3
  import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions';
3
4
  import { ConsoleWithLogLevel } from '../common/console';
4
5
  import { Diagnostic } from '../common/diagnostic';
@@ -8,6 +9,7 @@ import { ParseFileResults, ParseOptions } from '../parser/parser';
8
9
  export interface FileAnalysisResult {
9
10
  fileUri: Uri;
10
11
  parseResults?: ParseFileResults | undefined;
12
+ moduleScope?: Scope | undefined;
11
13
  errors: Diagnostic[];
12
14
  warnings: Diagnostic[];
13
15
  infos: Diagnostic[];
@@ -51,6 +51,7 @@ exports.validateResults = validateResults;
51
51
  const assert = __importStar(require("assert"));
52
52
  const fs = __importStar(require("fs"));
53
53
  const path = __importStar(require("path"));
54
+ const AnalyzerNodeInfo = __importStar(require("../analyzer/analyzerNodeInfo"));
54
55
  const importResolver_1 = require("../analyzer/importResolver");
55
56
  const program_1 = require("../analyzer/program");
56
57
  const testWalker_1 = require("../analyzer/testWalker");
@@ -130,9 +131,13 @@ function getAnalysisResults(program, fileUris, configOptions = new configOptions
130
131
  return sourceFiles.map((sourceFile, index) => {
131
132
  if (sourceFile) {
132
133
  const diagnostics = sourceFile.getDiagnostics(configOptions) || [];
134
+ const parseResults = sourceFile.getParseResults();
133
135
  const analysisResult = {
134
136
  fileUri: sourceFile.getUri(),
135
- parseResults: sourceFile.getParseResults(),
137
+ parseResults,
138
+ moduleScope: parseResults
139
+ ? AnalyzerNodeInfo.getScope(parseResults.parserOutput.parseTree, program.analyzerNodeInfoContext)
140
+ : undefined,
136
141
  errors: diagnostics.filter((diag) => diag.category === 0 /* DiagnosticCategory.Error */),
137
142
  warnings: diagnostics.filter((diag) => diag.category === 1 /* DiagnosticCategory.Warning */),
138
143
  infos: diagnostics.filter((diag) => diag.category === 2 /* DiagnosticCategory.Information */),
@@ -147,6 +152,7 @@ function getAnalysisResults(program, fileUris, configOptions = new configOptions
147
152
  const analysisResult = {
148
153
  fileUri: uri_1.Uri.empty(),
149
154
  parseResults: undefined,
155
+ moduleScope: undefined,
150
156
  errors: [],
151
157
  warnings: [],
152
158
  infos: [],
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../../../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../../../../src/tests/testUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CH,sDAEC;AAED,wCASC;AAED,8BAOC;AAED,0CAmBC;AAED,wDA+BC;AAED,gDAiDC;AAED,0CAgDC;AAzND,+CAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAE7B,+EAAiE;AACjE,+DAA4D;AAC5D,iDAA8C;AAE9C,uDAAwD;AAExD,2DAA4G;AAC5G,+CAAqE;AACrE,2CAAuC;AAGvC,6DAA0D;AAC1D,6DAAkF;AAClF,mFAA4E;AAC5E,2CAAwC;AACxC,qDAA+C;AAC/C,6CAAwF;AAExF,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,qBAAqB;AACpB,MAAc,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAcjD,SAAgB,qBAAqB,CAAC,QAAgB;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,aAAa,QAAQ,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAgB,cAAc,CAAC,QAAgB;IAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,GAAG,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,SAAgB,SAAS,CACrB,WAAmB,EACnB,QAAwB,EACxB,eAA6B,IAAI,qBAAY,EAAE;IAE/C,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,eAAe,CAC3B,QAAgB,EAChB,QAAwB,EACxB,eAAe,GAAG,IAAI,oCAAoB,CACtC,QAAQ,EACR,gBAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EACf,IAAA,4CAA4B,GAAE;AAC9B,0BAA0B,CAAC,SAAS;AACpC,2BAA2B,CAAC,SAAS;AACrC,uBAAuB,CAAC,SAAS,CACpC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;IACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;IACnC,CAAC;IACD,YAAY,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;IAC3D,OAAO,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,sBAAsB,CAClC,SAAmB,EACnB,aAAa,GAAG,IAAI,6BAAa,CAAC,SAAG,CAAC,KAAK,EAAE,CAAC,EAC9C,OAA6B;IAE7B,6BAA6B;IAC7B,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAEtC,MAAM,QAAQ,GAAG,IAAI,6BAAY,EAAE,CAAC;IACpC,MAAM,EAAE,GAAG,IAAA,yCAAwB,EAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,IAAA,iDAAqB,EAAC,EAAE,EAAE,OAAO,IAAI,IAAI,qBAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1F,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,+BAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IAE/G,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAElC,2EAA2E;IAC3E,yEAAyE;IACzE,oBAAoB;IACpB,OAAO,CAAC,mBAAmB,CAAC,CAAC,YAA0B,EAAE,SAAwB,EAAE,EAAE;QACjF,MAAM,cAAc,GAAG,IAAI,2BAAc,CAAC,SAAS,CAAC,CAAC;QACrD,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAErE,OAAO,CAAC,OAAO,EAAE,CAAC;IAClB,eAAe,CAAC,OAAO,EAAE,CAAC;IAE1B,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAgB,kBAAkB,CAC9B,OAAgB,EAChB,QAAe,EACf,aAAa,GAAG,IAAI,6BAAa,CAAC,SAAG,CAAC,KAAK,EAAE,CAAC;IAE9C,6BAA6B;IAC7B,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAEtC,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACvB,+DAA+D;QAC/D,2DAA2D;IAC/D,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChF,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACnE,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;YAClD,MAAM,cAAc,GAAuB;gBACvC,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE;gBAC5B,YAAY;gBACZ,WAAW,EAAE,YAAY;oBACrB,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,uBAAuB,CAAC;oBACjG,CAAC,CAAC,SAAS;gBACf,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,qCAA6B,CAAC;gBAChF,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,uCAA+B,CAAC;gBACpF,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,2CAAmC,CAAC;gBACrF,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,0CAAkC,CAAC;gBAC1F,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,+CAAuC,CAAC;gBACpG,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,0CAAkC,CAAC;aAC7F,CAAC;YACF,OAAO,cAAc,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,IAAA,YAAI,EAAC,6BAA6B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAErD,MAAM,cAAc,GAAuB;gBACvC,OAAO,EAAE,SAAG,CAAC,KAAK,EAAE;gBACpB,YAAY,EAAE,SAAS;gBACvB,WAAW,EAAE,SAAS;gBACtB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,gBAAgB,EAAE,EAAE;gBACpB,WAAW,EAAE,EAAE;aAClB,CAAC;YACF,OAAO,cAAc,CAAC;QAC1B,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,eAAe,CAC3B,OAA6B,EAC7B,UAAkB,EAClB,YAAY,GAAG,CAAC,EAChB,SAAkB,EAClB,UAAmB,EACnB,eAAwB,EACxB,UAAmB;IAEnB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEtC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1C,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,YAAY,UAAU,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAC9C,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,YAAY,YAAY,kBAAkB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,YAAY,SAAS,eAAe,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/C,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,YAAY,UAAU,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;IAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YACzD,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,YAAY,eAAe,qBAAqB,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QACtG,CAAC;IACL,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/C,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,YAAY,UAAU,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3F,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAmB;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzG,CAAC;AACL,CAAC"}
@@ -88,7 +88,7 @@ test('handle comments', () => {
88
88
  });
89
89
  function verifyRemoveNodes(code) {
90
90
  const state = (0, testState_1.parseAndGetTestState)(code).state;
91
- const tracker = new textEditTracker_1.TextEditTracker();
91
+ const tracker = new textEditTracker_1.TextEditTracker(state.program.analyzerNodeInfoContext);
92
92
  const ranges = state.getRanges();
93
93
  const changeRanges = _getChangeRanges(ranges);
94
94
  for (const range of changeRanges) {
@@ -103,7 +103,7 @@ function verifyRemoveNodes(code) {
103
103
  }
104
104
  function verifyEdits(code, mergeOnlyDuplications = true) {
105
105
  const state = (0, testState_1.parseAndGetTestState)(code).state;
106
- const tracker = new textEditTracker_1.TextEditTracker(mergeOnlyDuplications);
106
+ const tracker = new textEditTracker_1.TextEditTracker(state.program.analyzerNodeInfoContext, mergeOnlyDuplications);
107
107
  const ranges = state.getRanges();
108
108
  const changeRanges = _getChangeRanges(ranges);
109
109
  for (const range of changeRanges) {
@@ -1 +1 @@
1
- {"version":3,"file":"textEditUtil.test.js","sourceRoot":"","sources":["../../../../../src/tests/textEditUtil.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"textEditUtil.test.js","sourceRoot":"","sources":["../../../../../src/tests/textEditUtil.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};