@zzzen/pyright-internal 1.2.0-dev.20230423 → 1.2.0-dev.20230507

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 (260) hide show
  1. package/dist/analyzer/analyzerFileInfo.d.ts +4 -1
  2. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  3. package/dist/analyzer/backgroundAnalysisProgram.d.ts +7 -4
  4. package/dist/analyzer/backgroundAnalysisProgram.js +22 -7
  5. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  6. package/dist/analyzer/binder.js +12 -7
  7. package/dist/analyzer/binder.js.map +1 -1
  8. package/dist/analyzer/checker.d.ts +1 -0
  9. package/dist/analyzer/checker.js +58 -7
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/constructors.d.ts +6 -0
  12. package/dist/analyzer/constructors.js +456 -0
  13. package/dist/analyzer/constructors.js.map +1 -0
  14. package/dist/analyzer/dataClasses.js +89 -2
  15. package/dist/analyzer/dataClasses.js.map +1 -1
  16. package/dist/analyzer/declarationUtils.d.ts +6 -1
  17. package/dist/analyzer/declarationUtils.js +10 -8
  18. package/dist/analyzer/declarationUtils.js.map +1 -1
  19. package/dist/analyzer/enums.js +54 -8
  20. package/dist/analyzer/enums.js.map +1 -1
  21. package/dist/analyzer/importResolver.d.ts +15 -15
  22. package/dist/analyzer/importResolver.js +477 -477
  23. package/dist/analyzer/importResolver.js.map +1 -1
  24. package/dist/analyzer/importStatementUtils.d.ts +2 -2
  25. package/dist/analyzer/importStatementUtils.js.map +1 -1
  26. package/dist/analyzer/namedTuples.d.ts +1 -1
  27. package/dist/analyzer/namedTuples.js +30 -42
  28. package/dist/analyzer/namedTuples.js.map +1 -1
  29. package/dist/analyzer/operations.d.ts +16 -0
  30. package/dist/analyzer/operations.js +749 -0
  31. package/dist/analyzer/operations.js.map +1 -0
  32. package/dist/analyzer/packageTypeReport.d.ts +2 -1
  33. package/dist/analyzer/packageTypeReport.js +2 -1
  34. package/dist/analyzer/packageTypeReport.js.map +1 -1
  35. package/dist/analyzer/packageTypeVerifier.d.ts +1 -1
  36. package/dist/analyzer/packageTypeVerifier.js +27 -13
  37. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  38. package/dist/analyzer/parseTreeUtils.d.ts +4 -2
  39. package/dist/analyzer/parseTreeUtils.js +32 -1
  40. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  41. package/dist/analyzer/patternMatching.js +16 -0
  42. package/dist/analyzer/patternMatching.js.map +1 -1
  43. package/dist/analyzer/program.d.ts +29 -53
  44. package/dist/analyzer/program.js +1050 -1649
  45. package/dist/analyzer/program.js.map +1 -1
  46. package/dist/analyzer/protocols.js +1 -1
  47. package/dist/analyzer/protocols.js.map +1 -1
  48. package/dist/analyzer/service.d.ts +14 -35
  49. package/dist/analyzer/service.js +92 -121
  50. package/dist/analyzer/service.js.map +1 -1
  51. package/dist/analyzer/sourceFile.d.ts +14 -49
  52. package/dist/analyzer/sourceFile.js +271 -291
  53. package/dist/analyzer/sourceFile.js.map +1 -1
  54. package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -2
  55. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  56. package/dist/analyzer/typeEvaluator.js +417 -1570
  57. package/dist/analyzer/typeEvaluator.js.map +1 -1
  58. package/dist/analyzer/typeEvaluatorTypes.d.ts +44 -9
  59. package/dist/analyzer/typeEvaluatorTypes.js +33 -1
  60. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  61. package/dist/analyzer/typeGuards.js +5 -9
  62. package/dist/analyzer/typeGuards.js.map +1 -1
  63. package/dist/analyzer/typeStubWriter.js.map +1 -1
  64. package/dist/analyzer/typeUtils.d.ts +3 -0
  65. package/dist/analyzer/typeUtils.js +66 -9
  66. package/dist/analyzer/typeUtils.js.map +1 -1
  67. package/dist/analyzer/typeVarContext.d.ts +5 -5
  68. package/dist/analyzer/typeVarContext.js +7 -0
  69. package/dist/analyzer/typeVarContext.js.map +1 -1
  70. package/dist/analyzer/typedDicts.js +2 -2
  71. package/dist/analyzer/typedDicts.js.map +1 -1
  72. package/dist/analyzer/types.d.ts +4 -2
  73. package/dist/analyzer/types.js +7 -0
  74. package/dist/analyzer/types.js.map +1 -1
  75. package/dist/backgroundAnalysisBase.d.ts +10 -11
  76. package/dist/backgroundAnalysisBase.js +87 -87
  77. package/dist/backgroundAnalysisBase.js.map +1 -1
  78. package/dist/commands/dumpFileDebugInfoCommand.js +8 -8
  79. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  80. package/dist/commands/quickActionCommand.js +4 -1
  81. package/dist/commands/quickActionCommand.js.map +1 -1
  82. package/dist/common/cancellationUtils.d.ts +1 -1
  83. package/dist/common/cancellationUtils.js +9 -9
  84. package/dist/common/cancellationUtils.js.map +1 -1
  85. package/dist/common/commandLineOptions.d.ts +1 -2
  86. package/dist/common/commandLineOptions.js.map +1 -1
  87. package/dist/common/configOptions.d.ts +2 -2
  88. package/dist/common/configOptions.js.map +1 -1
  89. package/dist/common/console.d.ts +5 -9
  90. package/dist/common/console.js +46 -33
  91. package/dist/common/console.js.map +1 -1
  92. package/dist/common/deferred.js +10 -10
  93. package/dist/common/deferred.js.map +1 -1
  94. package/dist/common/extensibility.d.ts +27 -5
  95. package/dist/common/extensibility.js +1 -1
  96. package/dist/common/extensibility.js.map +1 -1
  97. package/dist/common/fileBasedCancellationUtils.js +5 -5
  98. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  99. package/dist/common/fileSystem.d.ts +12 -10
  100. package/dist/common/fileSystem.js.map +1 -1
  101. package/dist/common/fullAccessHost.d.ts +3 -3
  102. package/dist/common/fullAccessHost.js +6 -6
  103. package/dist/common/fullAccessHost.js.map +1 -1
  104. package/dist/common/pathUtils.d.ts +13 -13
  105. package/dist/common/pathUtils.js.map +1 -1
  106. package/dist/common/realFileSystem.js +12 -7
  107. package/dist/common/realFileSystem.js.map +1 -1
  108. package/dist/common/uriParser.d.ts +2 -2
  109. package/dist/common/uriParser.js +3 -3
  110. package/dist/common/uriParser.js.map +1 -1
  111. package/dist/common/workspaceEditUtils.d.ts +5 -5
  112. package/dist/common/workspaceEditUtils.js +7 -4
  113. package/dist/common/workspaceEditUtils.js.map +1 -1
  114. package/dist/languageServerBase.d.ts +32 -31
  115. package/dist/languageServerBase.js +278 -345
  116. package/dist/languageServerBase.js.map +1 -1
  117. package/dist/languageService/analyzerServiceExecutor.js +0 -1
  118. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  119. package/dist/languageService/callHierarchyProvider.d.ts +16 -12
  120. package/dist/languageService/callHierarchyProvider.js +125 -41
  121. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  122. package/dist/languageService/completionProvider.d.ts +10 -13
  123. package/dist/languageService/completionProvider.js +21 -10
  124. package/dist/languageService/completionProvider.js.map +1 -1
  125. package/dist/languageService/definitionProvider.d.ts +23 -9
  126. package/dist/languageService/definitionProvider.js +116 -91
  127. package/dist/languageService/definitionProvider.js.map +1 -1
  128. package/dist/languageService/documentHighlightProvider.d.ts +8 -3
  129. package/dist/languageService/documentHighlightProvider.js +17 -6
  130. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  131. package/dist/languageService/documentSymbolCollector.d.ts +6 -7
  132. package/dist/languageService/documentSymbolCollector.js +21 -11
  133. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  134. package/dist/languageService/documentSymbolProvider.js +5 -3
  135. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  136. package/dist/languageService/hoverProvider.d.ts +4 -3
  137. package/dist/languageService/hoverProvider.js +30 -36
  138. package/dist/languageService/hoverProvider.js.map +1 -1
  139. package/dist/languageService/navigationUtils.d.ts +6 -0
  140. package/dist/languageService/navigationUtils.js +28 -0
  141. package/dist/languageService/navigationUtils.js.map +1 -0
  142. package/dist/languageService/quickActions.d.ts +2 -2
  143. package/dist/languageService/quickActions.js +12 -1
  144. package/dist/languageService/quickActions.js.map +1 -1
  145. package/dist/languageService/referencesProvider.d.ts +13 -12
  146. package/dist/languageService/referencesProvider.js +102 -16
  147. package/dist/languageService/referencesProvider.js.map +1 -1
  148. package/dist/languageService/renameProvider.d.ts +17 -0
  149. package/dist/languageService/renameProvider.js +143 -0
  150. package/dist/languageService/renameProvider.js.map +1 -0
  151. package/dist/languageService/signatureHelpProvider.d.ts +19 -23
  152. package/dist/languageService/signatureHelpProvider.js +111 -18
  153. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  154. package/dist/localization/localize.d.ts +17 -14
  155. package/dist/localization/localize.js +4 -6
  156. package/dist/localization/localize.js.map +1 -1
  157. package/dist/localization/package.nls.en-us.json +5 -6
  158. package/dist/parser/characterStream.d.ts +3 -3
  159. package/dist/parser/characterStream.js +12 -12
  160. package/dist/parser/characterStream.js.map +1 -1
  161. package/dist/parser/parser.d.ts +1 -1
  162. package/dist/parser/parser.js.map +1 -1
  163. package/dist/pyright.js +57 -54
  164. package/dist/pyright.js.map +1 -1
  165. package/dist/pyrightFileSystem.d.ts +1 -1
  166. package/dist/pyrightFileSystem.js +21 -21
  167. package/dist/pyrightFileSystem.js.map +1 -1
  168. package/dist/readonlyAugmentedFileSystem.d.ts +6 -6
  169. package/dist/readonlyAugmentedFileSystem.js +28 -28
  170. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  171. package/dist/server.js +6 -6
  172. package/dist/server.js.map +1 -1
  173. package/dist/tests/chainedSourceFiles.test.js +1 -1
  174. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  175. package/dist/tests/checker.test.js +1 -1
  176. package/dist/tests/documentSymbolCollector.test.js +3 -3
  177. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  178. package/dist/tests/fourslash/fourslash.d.ts +4 -4
  179. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js +1 -1
  180. package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js.map +1 -1
  181. package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -3
  182. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  183. package/dist/tests/harness/fourslash/testState.d.ts +11 -11
  184. package/dist/tests/harness/fourslash/testState.js +123 -113
  185. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  186. package/dist/tests/harness/vfs/filesystem.d.ts +8 -8
  187. package/dist/tests/harness/vfs/filesystem.js +68 -68
  188. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  189. package/dist/tests/importStatementUtils.test.js +34 -0
  190. package/dist/tests/importStatementUtils.test.js.map +1 -1
  191. package/dist/tests/signatureHelp.test.js +5 -1
  192. package/dist/tests/signatureHelp.test.js.map +1 -1
  193. package/dist/tests/sourceFile.test.js +2 -2
  194. package/dist/tests/sourceFile.test.js.map +1 -1
  195. package/dist/tests/testStateUtils.d.ts +2 -2
  196. package/dist/tests/testStateUtils.js +39 -9
  197. package/dist/tests/testStateUtils.js.map +1 -1
  198. package/dist/tests/typeEvaluator1.test.js +8 -0
  199. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  200. package/dist/tests/typeEvaluator2.test.js +13 -1
  201. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  202. package/dist/tests/typeEvaluator3.test.js +2 -2
  203. package/dist/tests/typeEvaluator4.test.js +9 -1
  204. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  205. package/dist/tests/typeEvaluator5.test.js +4 -0
  206. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  207. package/dist/tests/workspaceEditUtils.test.js +84 -0
  208. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  209. package/package.json +4 -4
  210. package/dist/languageService/indentationUtils.d.ts +0 -16
  211. package/dist/languageService/indentationUtils.js +0 -727
  212. package/dist/languageService/indentationUtils.js.map +0 -1
  213. package/dist/languageService/insertionPointUtils.d.ts +0 -9
  214. package/dist/languageService/insertionPointUtils.js +0 -132
  215. package/dist/languageService/insertionPointUtils.js.map +0 -1
  216. package/dist/languageService/renameModuleProvider.d.ts +0 -65
  217. package/dist/languageService/renameModuleProvider.js +0 -939
  218. package/dist/languageService/renameModuleProvider.js.map +0 -1
  219. package/dist/tests/indentationUtils.ptvs.test.d.ts +0 -1
  220. package/dist/tests/indentationUtils.ptvs.test.js +0 -324
  221. package/dist/tests/indentationUtils.ptvs.test.js.map +0 -1
  222. package/dist/tests/indentationUtils.reindent.test.d.ts +0 -1
  223. package/dist/tests/indentationUtils.reindent.test.js +0 -372
  224. package/dist/tests/indentationUtils.reindent.test.js.map +0 -1
  225. package/dist/tests/indentationUtils.test.d.ts +0 -1
  226. package/dist/tests/indentationUtils.test.js +0 -502
  227. package/dist/tests/indentationUtils.test.js.map +0 -1
  228. package/dist/tests/insertionPointUtils.test.d.ts +0 -1
  229. package/dist/tests/insertionPointUtils.test.js +0 -154
  230. package/dist/tests/insertionPointUtils.test.js.map +0 -1
  231. package/dist/tests/moveSymbol.importAdder.test.d.ts +0 -1
  232. package/dist/tests/moveSymbol.importAdder.test.js +0 -298
  233. package/dist/tests/moveSymbol.importAdder.test.js.map +0 -1
  234. package/dist/tests/moveSymbol.insertion.test.d.ts +0 -1
  235. package/dist/tests/moveSymbol.insertion.test.js +0 -537
  236. package/dist/tests/moveSymbol.insertion.test.js.map +0 -1
  237. package/dist/tests/moveSymbol.misc.test.d.ts +0 -1
  238. package/dist/tests/moveSymbol.misc.test.js +0 -169
  239. package/dist/tests/moveSymbol.misc.test.js.map +0 -1
  240. package/dist/tests/moveSymbol.updateReference.test.d.ts +0 -1
  241. package/dist/tests/moveSymbol.updateReference.test.js +0 -1057
  242. package/dist/tests/moveSymbol.updateReference.test.js.map +0 -1
  243. package/dist/tests/renameModule.folder.test.d.ts +0 -1
  244. package/dist/tests/renameModule.folder.test.js +0 -229
  245. package/dist/tests/renameModule.folder.test.js.map +0 -1
  246. package/dist/tests/renameModule.fromImports.test.d.ts +0 -1
  247. package/dist/tests/renameModule.fromImports.test.js +0 -790
  248. package/dist/tests/renameModule.fromImports.test.js.map +0 -1
  249. package/dist/tests/renameModule.imports.test.d.ts +0 -1
  250. package/dist/tests/renameModule.imports.test.js +0 -380
  251. package/dist/tests/renameModule.imports.test.js.map +0 -1
  252. package/dist/tests/renameModule.misc.test.d.ts +0 -1
  253. package/dist/tests/renameModule.misc.test.js +0 -615
  254. package/dist/tests/renameModule.misc.test.js.map +0 -1
  255. package/dist/tests/renameModule.relativePath.test.d.ts +0 -1
  256. package/dist/tests/renameModule.relativePath.test.js +0 -231
  257. package/dist/tests/renameModule.relativePath.test.js.map +0 -1
  258. package/dist/tests/renameModuleTestUtils.d.ts +0 -4
  259. package/dist/tests/renameModuleTestUtils.js +0 -76
  260. package/dist/tests/renameModuleTestUtils.js.map +0 -1
@@ -30,13 +30,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
30
30
  return result;
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.DefinitionProvider = exports.DefinitionFilter = void 0;
33
+ exports.TypeDefinitionProvider = exports.DefinitionProvider = exports.DefinitionFilter = void 0;
34
34
  const analyzerNodeInfo_1 = require("../analyzer/analyzerNodeInfo");
35
35
  const declaration_1 = require("../analyzer/declaration");
36
36
  const ParseTreeUtils = __importStar(require("../analyzer/parseTreeUtils"));
37
37
  const sourceMapper_1 = require("../analyzer/sourceMapper");
38
- const types_1 = require("../analyzer/types");
39
38
  const typeUtils_1 = require("../analyzer/typeUtils");
39
+ const types_1 = require("../analyzer/types");
40
40
  const cancellationUtils_1 = require("../common/cancellationUtils");
41
41
  const collectionUtils_1 = require("../common/collectionUtils");
42
42
  const core_1 = require("../common/core");
@@ -49,104 +49,58 @@ var DefinitionFilter;
49
49
  DefinitionFilter["PreferSource"] = "preferSource";
50
50
  DefinitionFilter["PreferStubs"] = "preferStubs";
51
51
  })(DefinitionFilter = exports.DefinitionFilter || (exports.DefinitionFilter = {}));
52
- class DefinitionProvider {
53
- static getDefinitionsForPosition(sourceMapper, parseResults, position, filter, evaluator, token) {
54
- (0, cancellationUtils_1.throwIfCancellationRequested)(token);
55
- const offset = (0, positionUtils_1.convertPositionToOffset)(position, parseResults.tokenizerOutput.lines);
56
- if (offset === undefined) {
57
- return undefined;
58
- }
59
- const node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset);
60
- if (node === undefined) {
61
- return undefined;
62
- }
63
- return DefinitionProvider.getDefinitionsForNode(sourceMapper, node, filter, evaluator, token);
52
+ class DefinitionProviderBase {
53
+ constructor(sourceMapper, evaluator, node, offset, _filter, token) {
54
+ this.sourceMapper = sourceMapper;
55
+ this.evaluator = evaluator;
56
+ this.node = node;
57
+ this.offset = offset;
58
+ this._filter = _filter;
59
+ this.token = token;
64
60
  }
65
- static getDefinitionsForNode(sourceMapper, node, filter, evaluator, token) {
61
+ getDefinitionsForNode(node, offset) {
62
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this.token);
66
63
  const definitions = [];
67
64
  // Let extensions have a try first.
68
65
  extensibility_1.Extensions.getProgramExtensions(node).forEach((e) => {
69
66
  if (e.declarationProviderExtension) {
70
- const declarations = e.declarationProviderExtension.tryGetDeclarations(evaluator, node, extensibility_1.DeclarationUseCase.Definition, token);
71
- DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper);
67
+ const declarations = e.declarationProviderExtension.tryGetDeclarations(this.evaluator, node, offset, extensibility_1.DeclarationUseCase.Definition, this.token);
68
+ this.resolveDeclarations(declarations, definitions);
72
69
  }
73
70
  });
74
71
  // There should be only one 'definition', so only if extensions failed should we try again.
75
72
  if (definitions.length === 0) {
76
73
  if (node.nodeType === 38 /* Name */) {
77
- const declarations = evaluator.getDeclarationsForNameNode(node);
78
- DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper);
74
+ const declarations = this.evaluator.getDeclarationsForNameNode(node);
75
+ this.resolveDeclarations(declarations, definitions);
79
76
  }
80
77
  else if (node.nodeType === 49 /* String */) {
81
- const declarations = evaluator.getDeclarationsForStringNode(node);
82
- DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper);
78
+ const declarations = this.evaluator.getDeclarationsForStringNode(node);
79
+ this.resolveDeclarations(declarations, definitions);
83
80
  }
84
81
  }
85
82
  if (definitions.length === 0) {
86
83
  return undefined;
87
84
  }
88
- if (filter === DefinitionFilter.All) {
85
+ if (this._filter === DefinitionFilter.All) {
89
86
  return definitions;
90
87
  }
91
88
  // If go-to-declaration is supported, attempt to only show only pyi files in go-to-declaration
92
89
  // and none in go-to-definition, unless filtering would produce an empty list.
93
- const preferStubs = filter === DefinitionFilter.PreferStubs;
90
+ const preferStubs = this._filter === DefinitionFilter.PreferStubs;
94
91
  const wantedFile = (v) => preferStubs === (0, sourceMapper_1.isStubFile)(v.path);
95
92
  if (definitions.find(wantedFile)) {
96
93
  return definitions.filter(wantedFile);
97
94
  }
98
95
  return definitions;
99
96
  }
100
- static getTypeDefinitionsForPosition(sourceMapper, parseResults, position, evaluator, filePath, token) {
101
- var _a;
102
- (0, cancellationUtils_1.throwIfCancellationRequested)(token);
103
- const offset = (0, positionUtils_1.convertPositionToOffset)(position, parseResults.tokenizerOutput.lines);
104
- if (offset === undefined) {
105
- return undefined;
106
- }
107
- const node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset);
108
- if (node === undefined) {
109
- return undefined;
110
- }
111
- const definitions = [];
112
- if (node.nodeType === 38 /* Name */) {
113
- const type = evaluator.getType(node);
114
- if (type) {
115
- let declarations = [];
116
- (0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
117
- if ((subtype === null || subtype === void 0 ? void 0 : subtype.category) === 7 /* Class */) {
118
- (0, collectionUtils_1.appendArray)(declarations, sourceMapper.findClassDeclarationsByType(filePath, subtype));
119
- }
120
- });
121
- // Fall back to Go To Definition if the type can't be found (ex. Go To Type Definition
122
- // was executed on a type name)
123
- if (declarations.length === 0) {
124
- declarations = (_a = evaluator.getDeclarationsForNameNode(node)) !== null && _a !== void 0 ? _a : [];
125
- }
126
- DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper);
127
- }
128
- }
129
- else if (node.nodeType === 49 /* String */) {
130
- const declarations = evaluator.getDeclarationsForStringNode(node);
131
- DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper);
132
- }
133
- if (definitions.length === 0) {
134
- return undefined;
135
- }
136
- return definitions;
137
- }
138
- static _getDeclarationsForNameNode(node, evaluator) {
139
- var _a;
140
- // Fall back to the evaluator if no extension handled it.
141
- return (_a = evaluator.getDeclarationsForNameNode(node)) !== null && _a !== void 0 ? _a : [];
142
- }
143
- static _resolveDeclarations(declarations, evaluator, definitions, sourceMapper) {
97
+ resolveDeclarations(declarations, definitions) {
144
98
  if (declarations) {
145
99
  declarations.forEach((decl) => {
146
100
  var _a;
147
- let resolvedDecl = evaluator.resolveAliasDeclaration(decl,
148
- /* resolveLocalNames */ true,
149
- /* allowExternallyHiddenAccess */ true);
101
+ let resolvedDecl = this.evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true, {
102
+ allowExternallyHiddenAccess: true,
103
+ });
150
104
  if (resolvedDecl && resolvedDecl.path) {
151
105
  // If the decl is an unresolved import, skip it.
152
106
  if (resolvedDecl.type === 8 /* Alias */ && resolvedDecl.isUnresolved) {
@@ -161,18 +115,18 @@ class DefinitionProvider {
161
115
  resolvedDecl.submoduleFallback.path) {
162
116
  resolvedDecl = resolvedDecl.submoduleFallback;
163
117
  }
164
- this._addIfUnique(definitions, {
118
+ _addIfUnique(definitions, {
165
119
  path: resolvedDecl.path,
166
120
  range: resolvedDecl.range,
167
121
  });
168
122
  if ((0, declaration_1.isFunctionDeclaration)(resolvedDecl)) {
169
123
  // Handle overloaded function case
170
- const functionType = (_a = evaluator.getTypeForDeclaration(resolvedDecl)) === null || _a === void 0 ? void 0 : _a.type;
124
+ const functionType = (_a = this.evaluator.getTypeForDeclaration(resolvedDecl)) === null || _a === void 0 ? void 0 : _a.type;
171
125
  if (functionType && (0, types_1.isOverloadedFunction)(functionType)) {
172
126
  for (const overloadDecl of functionType.overloads
173
127
  .map((o) => o.details.declaration)
174
128
  .filter(core_1.isDefined)) {
175
- this._addIfUnique(definitions, {
129
+ _addIfUnique(definitions, {
176
130
  path: overloadDecl.path,
177
131
  range: overloadDecl.range,
178
132
  });
@@ -182,17 +136,17 @@ class DefinitionProvider {
182
136
  if ((0, sourceMapper_1.isStubFile)(resolvedDecl.path)) {
183
137
  if (resolvedDecl.type === 8 /* Alias */) {
184
138
  // Add matching source module
185
- sourceMapper
139
+ this.sourceMapper
186
140
  .findModules(resolvedDecl.path)
187
141
  .map((m) => { var _a; return (_a = (0, analyzerNodeInfo_1.getFileInfo)(m)) === null || _a === void 0 ? void 0 : _a.filePath; })
188
142
  .filter(core_1.isDefined)
189
- .forEach((f) => this._addIfUnique(definitions, this._createModuleEntry(f)));
143
+ .forEach((f) => _addIfUnique(definitions, _createModuleEntry(f)));
190
144
  }
191
145
  else {
192
- const implDecls = sourceMapper.findDeclarations(resolvedDecl);
146
+ const implDecls = this.sourceMapper.findDeclarations(resolvedDecl);
193
147
  for (const implDecl of implDecls) {
194
148
  if (implDecl && implDecl.path) {
195
- this._addIfUnique(definitions, {
149
+ _addIfUnique(definitions, {
196
150
  path: implDecl.path,
197
151
  range: implDecl.range,
198
152
  });
@@ -204,23 +158,94 @@ class DefinitionProvider {
204
158
  });
205
159
  }
206
160
  }
207
- static _createModuleEntry(filePath) {
208
- return {
209
- path: filePath,
210
- range: {
211
- start: { line: 0, character: 0 },
212
- end: { line: 0, character: 0 },
213
- },
214
- };
161
+ }
162
+ class DefinitionProvider extends DefinitionProviderBase {
163
+ constructor(program, filePath, position, filter, token) {
164
+ const sourceMapper = program.getSourceMapper(filePath, token);
165
+ const parseResults = program.getParseResults(filePath);
166
+ const { node, offset } = _tryGetNode(parseResults, position);
167
+ super(sourceMapper, program.evaluator, node, offset, filter, token);
168
+ }
169
+ static getDefinitionsForNode(sourceMapper, evaluator, node, offset, token) {
170
+ const provider = new DefinitionProviderBase(sourceMapper, evaluator, node, offset, DefinitionFilter.All, token);
171
+ return provider.getDefinitionsForNode(node, offset);
172
+ }
173
+ getDefinitions() {
174
+ if (this.node === undefined) {
175
+ return undefined;
176
+ }
177
+ return this.getDefinitionsForNode(this.node, this.offset);
178
+ }
179
+ }
180
+ exports.DefinitionProvider = DefinitionProvider;
181
+ class TypeDefinitionProvider extends DefinitionProviderBase {
182
+ constructor(program, filePath, position, token) {
183
+ const sourceMapper = program.getSourceMapper(filePath, token, /*mapCompiled*/ false, /*preferStubs*/ true);
184
+ const parseResults = program.getParseResults(filePath);
185
+ const { node, offset } = _tryGetNode(parseResults, position);
186
+ super(sourceMapper, program.evaluator, node, offset, DefinitionFilter.All, token);
187
+ this._filePath = filePath;
215
188
  }
216
- static _addIfUnique(definitions, itemToAdd) {
217
- for (const def of definitions) {
218
- if (def.path === itemToAdd.path && (0, textRange_1.rangesAreEqual)(def.range, itemToAdd.range)) {
219
- return;
189
+ getDefinitions() {
190
+ var _a;
191
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this.token);
192
+ if (this.node === undefined) {
193
+ return undefined;
194
+ }
195
+ const definitions = [];
196
+ if (this.node.nodeType === 38 /* Name */) {
197
+ const type = this.evaluator.getType(this.node);
198
+ if (type) {
199
+ let declarations = [];
200
+ (0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
201
+ if ((subtype === null || subtype === void 0 ? void 0 : subtype.category) === 7 /* Class */) {
202
+ (0, collectionUtils_1.appendArray)(declarations, this.sourceMapper.findClassDeclarationsByType(this._filePath, subtype));
203
+ }
204
+ });
205
+ // Fall back to Go To Definition if the type can't be found (ex. Go To Type Definition
206
+ // was executed on a type name)
207
+ if (declarations.length === 0) {
208
+ declarations = (_a = this.evaluator.getDeclarationsForNameNode(this.node)) !== null && _a !== void 0 ? _a : [];
209
+ }
210
+ this.resolveDeclarations(declarations, definitions);
220
211
  }
221
212
  }
222
- definitions.push(itemToAdd);
213
+ else if (this.node.nodeType === 49 /* String */) {
214
+ const declarations = this.evaluator.getDeclarationsForStringNode(this.node);
215
+ this.resolveDeclarations(declarations, definitions);
216
+ }
217
+ if (definitions.length === 0) {
218
+ return undefined;
219
+ }
220
+ return definitions;
223
221
  }
224
222
  }
225
- exports.DefinitionProvider = DefinitionProvider;
223
+ exports.TypeDefinitionProvider = TypeDefinitionProvider;
224
+ function _tryGetNode(parseResults, position) {
225
+ if (!parseResults) {
226
+ return { node: undefined, offset: 0 };
227
+ }
228
+ const offset = (0, positionUtils_1.convertPositionToOffset)(position, parseResults.tokenizerOutput.lines);
229
+ if (offset === undefined) {
230
+ return { node: undefined, offset: 0 };
231
+ }
232
+ return { node: ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset), offset };
233
+ }
234
+ function _createModuleEntry(filePath) {
235
+ return {
236
+ path: filePath,
237
+ range: {
238
+ start: { line: 0, character: 0 },
239
+ end: { line: 0, character: 0 },
240
+ },
241
+ };
242
+ }
243
+ function _addIfUnique(definitions, itemToAdd) {
244
+ for (const def of definitions) {
245
+ if (def.path === itemToAdd.path && (0, textRange_1.rangesAreEqual)(def.range, itemToAdd.range)) {
246
+ return;
247
+ }
248
+ }
249
+ definitions.push(itemToAdd);
250
+ }
226
251
  //# sourceMappingURL=definitionProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitionProvider.js","sourceRoot":"","sources":["../../../src/languageService/definitionProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definitionProvider.js","sourceRoot":"","sources":["../../../src/languageService/definitionProvider.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  import { CancellationToken, DocumentHighlight } from 'vscode-languageserver';
2
- import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes';
2
+ import { ProgramView } from '../common/extensibility';
3
3
  import { Position } from '../common/textRange';
4
- import { ParseResults } from '../parser/parser';
5
4
  export declare class DocumentHighlightProvider {
6
- static getDocumentHighlight(parseResults: ParseResults, position: Position, evaluator: TypeEvaluator, token: CancellationToken): DocumentHighlight[] | undefined;
5
+ private _program;
6
+ private _filePath;
7
+ private _position;
8
+ private _token;
9
+ private readonly _parseResults;
10
+ constructor(_program: ProgramView, _filePath: string, _position: Position, _token: CancellationToken);
11
+ getDocumentHighlight(): DocumentHighlight[] | undefined;
7
12
  }
@@ -36,26 +36,37 @@ const positionUtils_1 = require("../common/positionUtils");
36
36
  const textRange_1 = require("../common/textRange");
37
37
  const documentSymbolCollector_1 = require("./documentSymbolCollector");
38
38
  class DocumentHighlightProvider {
39
- static getDocumentHighlight(parseResults, position, evaluator, token) {
40
- (0, cancellationUtils_1.throwIfCancellationRequested)(token);
41
- const offset = (0, positionUtils_1.convertPositionToOffset)(position, parseResults.tokenizerOutput.lines);
39
+ constructor(_program, _filePath, _position, _token) {
40
+ this._program = _program;
41
+ this._filePath = _filePath;
42
+ this._position = _position;
43
+ this._token = _token;
44
+ this._parseResults = this._program.getParseResults(this._filePath);
45
+ }
46
+ getDocumentHighlight() {
47
+ (0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
48
+ if (!this._parseResults) {
49
+ return undefined;
50
+ }
51
+ const offset = (0, positionUtils_1.convertPositionToOffset)(this._position, this._parseResults.tokenizerOutput.lines);
42
52
  if (offset === undefined) {
43
53
  return undefined;
44
54
  }
45
- const node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset);
55
+ const node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset);
46
56
  if (node === undefined) {
47
57
  return undefined;
48
58
  }
49
59
  if (node.nodeType !== 38 /* Name */) {
50
60
  return undefined;
51
61
  }
52
- const results = documentSymbolCollector_1.DocumentSymbolCollector.collectFromNode(node, evaluator, token, parseResults.parseTree,
62
+ const results = documentSymbolCollector_1.DocumentSymbolCollector.collectFromNode(this._program, node, this._token, this._parseResults.parseTree,
53
63
  /* treatModuleInImportAndFromImportSame */ true);
64
+ const lines = this._parseResults.tokenizerOutput.lines;
54
65
  return results.map((r) => ({
55
66
  kind: r.node.nodeType === 38 /* Name */ && ParseTreeUtils.isWriteAccess(r.node)
56
67
  ? vscode_languageserver_1.DocumentHighlightKind.Write
57
68
  : vscode_languageserver_1.DocumentHighlightKind.Read,
58
- range: (0, positionUtils_1.convertOffsetsToRange)(r.range.start, textRange_1.TextRange.getEnd(r.range), parseResults.tokenizerOutput.lines),
69
+ range: (0, positionUtils_1.convertOffsetsToRange)(r.range.start, textRange_1.TextRange.getEnd(r.range), lines),
59
70
  }));
60
71
  }
61
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"documentHighlightProvider.js","sourceRoot":"","sources":["../../../src/languageService/documentHighlightProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;AAEH,iEAAoG;AAEpG,2EAA6D;AAE7D,mEAA2E;AAC3E,2DAAyF;AACzF,mDAA0D;AAG1D,uEAAoE;AAEpE,MAAa,yBAAyB;IAClC,MAAM,CAAC,oBAAoB,CACvB,YAA0B,EAC1B,QAAkB,EAClB,SAAwB,EACxB,KAAwB;QAExB,IAAA,gDAA4B,EAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,IAAA,uCAAuB,EAAC,QAAQ,EAAE,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACrF,IAAI,MAAM,KAAK,SAAS,EAAE;YACtB,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7E,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,IAAI,CAAC,QAAQ,kBAAuB,EAAE;YACtC,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,OAAO,GAAG,iDAAuB,CAAC,eAAe,CACnD,IAAI,EACJ,SAAS,EACT,KAAK,EACL,YAAY,CAAC,SAAS;QACtB,0CAA0C,CAAC,IAAI,CAClD,CAAC;QAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI,EACA,CAAC,CAAC,IAAI,CAAC,QAAQ,kBAAuB,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1E,CAAC,CAAC,6CAAqB,CAAC,KAAK;gBAC7B,CAAC,CAAC,6CAAqB,CAAC,IAAI;YACpC,KAAK,EAAE,IAAA,qCAAqB,EAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC;SAC7G,CAAC,CAAC,CAAC;IACR,CAAC;CACJ;AAvCD,8DAuCC"}
1
+ {"version":3,"file":"documentHighlightProvider.js","sourceRoot":"","sources":["../../../src/languageService/documentHighlightProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;AAEH,iEAAoG;AAEpG,2EAA6D;AAC7D,mEAA2E;AAE3E,2DAAyF;AACzF,mDAA0D;AAG1D,uEAAoE;AAEpE,MAAa,yBAAyB;IAGlC,YACY,QAAqB,EACrB,SAAiB,EACjB,SAAmB,EACnB,MAAyB;QAHzB,aAAQ,GAAR,QAAQ,CAAa;QACrB,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAU;QACnB,WAAM,GAAN,MAAM,CAAmB;QAEjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB;QAChB,IAAA,gDAA4B,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,MAAM,GAAG,IAAA,uCAAuB,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACjG,IAAI,MAAM,KAAK,SAAS,EAAE;YACtB,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnF,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,IAAI,CAAC,QAAQ,kBAAuB,EAAE;YACtC,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,OAAO,GAAG,iDAAuB,CAAC,eAAe,CACnD,IAAI,CAAC,QAAQ,EACb,IAAI,EACJ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,CAAC,SAAS;QAC5B,0CAA0C,CAAC,IAAI,CAClD,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;QACvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI,EACA,CAAC,CAAC,IAAI,CAAC,QAAQ,kBAAuB,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1E,CAAC,CAAC,6CAAqB,CAAC,KAAK;gBAC7B,CAAC,CAAC,6CAAqB,CAAC,IAAI;YACpC,KAAK,EAAE,IAAA,qCAAqB,EAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;SAChF,CAAC,CAAC,CAAC;IACR,CAAC;CACJ;AAjDD,8DAiDC"}
@@ -1,9 +1,7 @@
1
1
  import { CancellationToken } from 'vscode-languageserver';
2
2
  import { Declaration } from '../analyzer/declaration';
3
3
  import { ParseTreeWalker } from '../analyzer/parseTreeWalker';
4
- import { SourceFile } from '../analyzer/sourceFile';
5
- import { SourceMapper } from '../analyzer/sourceMapper';
6
- import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes';
4
+ import { ProgramView, SourceFile } from '../common/extensibility';
7
5
  import { TextRange } from '../common/textRange';
8
6
  import { NameNode, ParseNode, StringListNode, StringNode } from '../parser/parseNodes';
9
7
  export declare type CollectionResult = {
@@ -15,25 +13,26 @@ export declare enum DocumentSymbolCollectorUseCase {
15
13
  Reference = 1
16
14
  }
17
15
  export declare class DocumentSymbolCollector extends ParseTreeWalker {
16
+ private _program;
18
17
  private _declarations;
19
- private _evaluator;
20
18
  private _cancellationToken;
21
19
  private _startingNode;
22
20
  private _treatModuleInImportAndFromImportSame;
23
21
  private _skipUnreachableCode;
24
22
  private _useCase;
25
- static collectFromNode(node: NameNode, evaluator: TypeEvaluator, cancellationToken: CancellationToken, startingNode?: ParseNode, treatModuleInImportAndFromImportSame?: boolean, skipUnreachableCode?: boolean, useCase?: DocumentSymbolCollectorUseCase): CollectionResult[];
26
- static getDeclarationsForNode(node: NameNode, evaluator: TypeEvaluator, resolveLocalName: boolean, useCase: DocumentSymbolCollectorUseCase, token: CancellationToken, sourceMapper?: SourceMapper, implicitlyImportedBy?: SourceFile[]): Declaration[];
27
23
  private _results;
28
24
  private _dunderAllNameNodes;
29
25
  private _initFunction;
30
26
  private _symbolNames;
31
- constructor(symbolNames: string[], _declarations: Declaration[], _evaluator: TypeEvaluator, _cancellationToken: CancellationToken, _startingNode: ParseNode, _treatModuleInImportAndFromImportSame?: boolean, _skipUnreachableCode?: boolean, _useCase?: DocumentSymbolCollectorUseCase);
27
+ constructor(_program: ProgramView, symbolNames: string[], _declarations: Declaration[], _cancellationToken: CancellationToken, _startingNode: ParseNode, _treatModuleInImportAndFromImportSame?: boolean, _skipUnreachableCode?: boolean, _useCase?: DocumentSymbolCollectorUseCase);
28
+ static collectFromNode(program: ProgramView, node: NameNode, cancellationToken: CancellationToken, startingNode?: ParseNode, treatModuleInImportAndFromImportSame?: boolean, skipUnreachableCode?: boolean, useCase?: DocumentSymbolCollectorUseCase): CollectionResult[];
29
+ static getDeclarationsForNode(program: ProgramView, node: NameNode, resolveLocalName: boolean, useCase: DocumentSymbolCollectorUseCase, token: CancellationToken, implicitlyImportedBy?: SourceFile[]): Declaration[];
32
30
  collect(): CollectionResult[];
33
31
  walk(node: ParseNode): void;
34
32
  visitName(node: NameNode): boolean;
35
33
  visitStringList(node: StringListNode): boolean;
36
34
  visitString(node: StringNode): boolean;
35
+ private get _evaluator();
37
36
  private _addResult;
38
37
  private _isDeclarationAllowed;
39
38
  private _resultsContainsDeclaration;
@@ -32,8 +32,8 @@ exports.DocumentSymbolCollector = exports.DocumentSymbolCollectorUseCase = void
32
32
  const AnalyzerNodeInfo = __importStar(require("../analyzer/analyzerNodeInfo"));
33
33
  const declaration_1 = require("../analyzer/declaration");
34
34
  const declarationUtils_1 = require("../analyzer/declarationUtils");
35
- const parseTreeUtils_1 = require("../analyzer/parseTreeUtils");
36
35
  const ParseTreeUtils = __importStar(require("../analyzer/parseTreeUtils"));
36
+ const parseTreeUtils_1 = require("../analyzer/parseTreeUtils");
37
37
  const parseTreeWalker_1 = require("../analyzer/parseTreeWalker");
38
38
  const ScopeUtils = __importStar(require("../analyzer/scopeUtils"));
39
39
  const sourceMapper_1 = require("../analyzer/sourceMapper");
@@ -51,10 +51,10 @@ var DocumentSymbolCollectorUseCase;
51
51
  // This walker looks for symbols that are semantically equivalent
52
52
  // to the requested symbol.
53
53
  class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
54
- constructor(symbolNames, _declarations, _evaluator, _cancellationToken, _startingNode, _treatModuleInImportAndFromImportSame = false, _skipUnreachableCode = true, _useCase = DocumentSymbolCollectorUseCase.Reference) {
54
+ constructor(_program, symbolNames, _declarations, _cancellationToken, _startingNode, _treatModuleInImportAndFromImportSame = false, _skipUnreachableCode = true, _useCase = DocumentSymbolCollectorUseCase.Reference) {
55
55
  super();
56
+ this._program = _program;
56
57
  this._declarations = _declarations;
57
- this._evaluator = _evaluator;
58
58
  this._cancellationToken = _cancellationToken;
59
59
  this._startingNode = _startingNode;
60
60
  this._treatModuleInImportAndFromImportSame = _treatModuleInImportAndFromImportSame;
@@ -80,22 +80,27 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
80
80
  }
81
81
  }
82
82
  }
83
- static collectFromNode(node, evaluator, cancellationToken, startingNode, treatModuleInImportAndFromImportSame = false, skipUnreachableCode = true, useCase = DocumentSymbolCollectorUseCase.Reference) {
84
- const declarations = this.getDeclarationsForNode(node, evaluator,
83
+ static collectFromNode(program, node, cancellationToken, startingNode, treatModuleInImportAndFromImportSame = false, skipUnreachableCode = true, useCase = DocumentSymbolCollectorUseCase.Reference) {
84
+ const declarations = this.getDeclarationsForNode(program, node,
85
85
  /* resolveLocalName */ true, useCase, cancellationToken);
86
86
  startingNode = startingNode !== null && startingNode !== void 0 ? startingNode : (0, parseTreeUtils_1.getModuleNode)(node);
87
87
  if (!startingNode) {
88
88
  return [];
89
89
  }
90
- const collector = new DocumentSymbolCollector([node.value], declarations, evaluator, cancellationToken, startingNode, treatModuleInImportAndFromImportSame, skipUnreachableCode, useCase);
90
+ const collector = new DocumentSymbolCollector(program, [node.value], declarations, cancellationToken, startingNode, treatModuleInImportAndFromImportSame, skipUnreachableCode, useCase);
91
91
  return collector.collect();
92
92
  }
93
- static getDeclarationsForNode(node, evaluator, resolveLocalName, useCase, token, sourceMapper, implicitlyImportedBy) {
93
+ static getDeclarationsForNode(program, node, resolveLocalName, useCase, token, implicitlyImportedBy) {
94
94
  (0, cancellationUtils_1.throwIfCancellationRequested)(token);
95
+ const evaluator = program.evaluator;
96
+ if (!evaluator) {
97
+ return [];
98
+ }
95
99
  const declarations = this._getDeclarationsForNode(node, useCase, evaluator, token,
96
100
  /* skipUnreachableCode */ false);
97
101
  // Add declarations from chained source files
98
- let builtinsScope = AnalyzerNodeInfo.getFileInfo(node).builtinsScope;
102
+ const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
103
+ let builtinsScope = fileInfo.builtinsScope;
99
104
  while (builtinsScope && builtinsScope.type === 3 /* Module */) {
100
105
  const symbol = builtinsScope === null || builtinsScope === void 0 ? void 0 : builtinsScope.lookUpSymbol(node.value);
101
106
  if (symbol) {
@@ -106,7 +111,7 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
106
111
  // Add declarations from files that implicitly import the target file.
107
112
  implicitlyImportedBy === null || implicitlyImportedBy === void 0 ? void 0 : implicitlyImportedBy.forEach((implicitImport) => {
108
113
  var _a;
109
- const parseTree = (_a = implicitImport.getParseResults()) === null || _a === void 0 ? void 0 : _a.parseTree;
114
+ const parseTree = (_a = program.getParseResults(implicitImport.getFilePath())) === null || _a === void 0 ? void 0 : _a.parseTree;
110
115
  if (parseTree) {
111
116
  const scope = AnalyzerNodeInfo.getScope(parseTree);
112
117
  const symbol = scope === null || scope === void 0 ? void 0 : scope.lookUpSymbol(node.value);
@@ -116,6 +121,7 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
116
121
  }
117
122
  });
118
123
  const resolvedDeclarations = [];
124
+ const sourceMapper = program.getSourceMapper(fileInfo.filePath, token);
119
125
  declarations.forEach((decl) => {
120
126
  const resolvedDecl = evaluator.resolveAliasDeclaration(decl, resolveLocalName);
121
127
  if (resolvedDecl) {
@@ -180,6 +186,9 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
180
186
  }
181
187
  return false;
182
188
  }
189
+ get _evaluator() {
190
+ return this._program.evaluator;
191
+ }
183
192
  _addResult(node) {
184
193
  const range = node.nodeType === 38 /* Name */ ? node : (0, parseTreeUtils_1.getStringNodeValueRange)(node);
185
194
  this._results.push({ node, range });
@@ -193,7 +202,8 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
193
202
  const match = this._declarations.find((decl) => (0, declarationUtils_1.areDeclarationsSame)(decl, resolvedDecl, this._treatModuleInImportAndFromImportSame,
194
203
  /* skipRangeForAliases */ true));
195
204
  if (match) {
196
- // Special case for __init__ being one of our symbol names and we have a classname as the other.
205
+ // Special case for __init__ being one of our symbol names and we
206
+ // have a class name as the other.
197
207
  if (this._initFunction) {
198
208
  // If this is a method, must be an __init__ reference.
199
209
  if (match.type === 5 /* Function */) {
@@ -332,7 +342,7 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
332
342
  const declUseCase = useCase === DocumentSymbolCollectorUseCase.Rename
333
343
  ? extensibility_1.DeclarationUseCase.Rename
334
344
  : extensibility_1.DeclarationUseCase.References;
335
- const extras = (_a = e.declarationProviderExtension) === null || _a === void 0 ? void 0 : _a.tryGetDeclarations(evaluator, node, declUseCase, token);
345
+ const extras = (_a = e.declarationProviderExtension) === null || _a === void 0 ? void 0 : _a.tryGetDeclarations(evaluator, node, node.start, declUseCase, token);
336
346
  if (extras && extras.length > 0) {
337
347
  result.push(...extras);
338
348
  }