@zzzen/pyright-internal 1.2.0-dev.20231001 → 1.2.0-dev.20231008

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 (110) hide show
  1. package/dist/analyzer/checker.d.ts +3 -1
  2. package/dist/analyzer/checker.js +55 -17
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/codeFlowEngine.js +10 -3
  5. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  6. package/dist/analyzer/decorators.d.ts +6 -1
  7. package/dist/analyzer/decorators.js +31 -24
  8. package/dist/analyzer/decorators.js.map +1 -1
  9. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  10. package/dist/analyzer/parseTreeUtils.js +21 -2
  11. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  12. package/dist/analyzer/properties.js +4 -0
  13. package/dist/analyzer/properties.js.map +1 -1
  14. package/dist/analyzer/protocols.js +7 -1
  15. package/dist/analyzer/protocols.js.map +1 -1
  16. package/dist/analyzer/scopeUtils.js +3 -2
  17. package/dist/analyzer/scopeUtils.js.map +1 -1
  18. package/dist/analyzer/typeEvaluator.d.ts +2 -1
  19. package/dist/analyzer/typeEvaluator.js +147 -222
  20. package/dist/analyzer/typeEvaluator.js.map +1 -1
  21. package/dist/analyzer/typeEvaluatorTypes.d.ts +7 -0
  22. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  23. package/dist/analyzer/typeGuards.d.ts +1 -1
  24. package/dist/analyzer/typeGuards.js +55 -43
  25. package/dist/analyzer/typeGuards.js.map +1 -1
  26. package/dist/analyzer/typeUtils.js +1 -1
  27. package/dist/analyzer/typeUtils.js.map +1 -1
  28. package/dist/analyzer/types.d.ts +1 -0
  29. package/dist/analyzer/types.js +3 -0
  30. package/dist/analyzer/types.js.map +1 -1
  31. package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
  32. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  33. package/dist/common/extensibility.d.ts +19 -6
  34. package/dist/common/extensibility.js +6 -7
  35. package/dist/common/extensibility.js.map +1 -1
  36. package/dist/common/pythonVersion.d.ts +1 -1
  37. package/dist/common/pythonVersion.js +1 -1
  38. package/dist/common/realFileSystem.js +9 -16
  39. package/dist/common/realFileSystem.js.map +1 -1
  40. package/dist/common/serviceProvider.d.ts +1 -1
  41. package/dist/common/serviceProvider.js.map +1 -1
  42. package/dist/common/serviceProviderExtensions.d.ts +3 -2
  43. package/dist/common/serviceProviderExtensions.js +2 -1
  44. package/dist/common/serviceProviderExtensions.js.map +1 -1
  45. package/dist/languageServerBase.d.ts +2 -0
  46. package/dist/languageServerBase.js +28 -1
  47. package/dist/languageServerBase.js.map +1 -1
  48. package/dist/languageService/callHierarchyProvider.d.ts +0 -1
  49. package/dist/languageService/callHierarchyProvider.js +33 -16
  50. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  51. package/dist/languageService/definitionProvider.js +4 -5
  52. package/dist/languageService/definitionProvider.js.map +1 -1
  53. package/dist/languageService/documentHighlightProvider.js +5 -2
  54. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  55. package/dist/languageService/documentSymbolCollector.d.ts +32 -23
  56. package/dist/languageService/documentSymbolCollector.js +170 -267
  57. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  58. package/dist/languageService/hoverProvider.js +1 -5
  59. package/dist/languageService/hoverProvider.js.map +1 -1
  60. package/dist/languageService/referencesProvider.d.ts +6 -6
  61. package/dist/languageService/referencesProvider.js +23 -8
  62. package/dist/languageService/referencesProvider.js.map +1 -1
  63. package/dist/languageService/renameProvider.js +3 -3
  64. package/dist/languageService/renameProvider.js.map +1 -1
  65. package/dist/localization/localize.d.ts +21 -0
  66. package/dist/localization/localize.js +7 -0
  67. package/dist/localization/localize.js.map +1 -1
  68. package/dist/localization/package.nls.cs.json +4 -0
  69. package/dist/localization/package.nls.de.json +4 -0
  70. package/dist/localization/package.nls.en-us.json +7 -0
  71. package/dist/localization/package.nls.es.json +4 -0
  72. package/dist/localization/package.nls.fr.json +4 -0
  73. package/dist/localization/package.nls.it.json +4 -0
  74. package/dist/localization/package.nls.ja.json +4 -0
  75. package/dist/localization/package.nls.ko.json +4 -0
  76. package/dist/localization/package.nls.pl.json +4 -0
  77. package/dist/localization/package.nls.pt-br.json +4 -0
  78. package/dist/localization/package.nls.qps-ploc.json +4 -0
  79. package/dist/localization/package.nls.ru.json +4 -0
  80. package/dist/localization/package.nls.tr.json +4 -0
  81. package/dist/localization/package.nls.zh-cn.json +4 -0
  82. package/dist/localization/package.nls.zh-tw.json +4 -0
  83. package/dist/parser/stringTokenUtils.js +9 -5
  84. package/dist/parser/stringTokenUtils.js.map +1 -1
  85. package/dist/parser/tokenizer.d.ts +1 -0
  86. package/dist/parser/tokenizer.js +5 -5
  87. package/dist/parser/tokenizer.js.map +1 -1
  88. package/dist/tests/checker.test.js +8 -0
  89. package/dist/tests/checker.test.js.map +1 -1
  90. package/dist/tests/documentSymbolCollector.test.js +8 -363
  91. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  92. package/dist/tests/testStateUtils.d.ts +3 -0
  93. package/dist/tests/testStateUtils.js +25 -1
  94. package/dist/tests/testStateUtils.js.map +1 -1
  95. package/dist/tests/typeEvaluator1.test.js +1 -1
  96. package/dist/tests/typeEvaluator2.test.js +9 -5
  97. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  98. package/dist/tests/typeEvaluator3.test.js +7 -3
  99. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  100. package/dist/tests/typeEvaluator4.test.js +8 -8
  101. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  102. package/dist/tests/typeEvaluator5.test.js +4 -2
  103. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  104. package/dist/workspaceFactory.d.ts +2 -1
  105. package/dist/workspaceFactory.js +3 -1
  106. package/dist/workspaceFactory.js.map +1 -1
  107. package/package.json +1 -1
  108. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.d.ts +0 -1
  109. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.js +0 -40
  110. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.js.map +0 -1
@@ -28,91 +28,84 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  return result;
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.DocumentSymbolCollector = exports.DocumentSymbolCollectorUseCase = void 0;
31
+ exports.addDeclarationIfUnique = exports.getDeclarationsForNameNode = exports.DocumentSymbolCollector = void 0;
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 = __importStar(require("../analyzer/parseTreeUtils"));
36
35
  const parseTreeUtils_1 = require("../analyzer/parseTreeUtils");
37
36
  const parseTreeWalker_1 = require("../analyzer/parseTreeWalker");
38
37
  const ScopeUtils = __importStar(require("../analyzer/scopeUtils"));
39
38
  const sourceFile_1 = require("../analyzer/sourceFile");
40
39
  const sourceFileInfoUtils_1 = require("../analyzer/sourceFileInfoUtils");
41
40
  const sourceMapper_1 = require("../analyzer/sourceMapper");
42
- const typeUtils_1 = require("../analyzer/typeUtils");
43
- const types_1 = require("../analyzer/types");
44
41
  const cancellationUtils_1 = require("../common/cancellationUtils");
45
42
  const collectionUtils_1 = require("../common/collectionUtils");
46
43
  const debug_1 = require("../common/debug");
47
44
  const extensibility_1 = require("../common/extensibility");
48
45
  const serviceProviderExtensions_1 = require("../common/serviceProviderExtensions");
49
- var DocumentSymbolCollectorUseCase;
50
- (function (DocumentSymbolCollectorUseCase) {
51
- DocumentSymbolCollectorUseCase[DocumentSymbolCollectorUseCase["Rename"] = 0] = "Rename";
52
- DocumentSymbolCollectorUseCase[DocumentSymbolCollectorUseCase["Reference"] = 1] = "Reference";
53
- })(DocumentSymbolCollectorUseCase = exports.DocumentSymbolCollectorUseCase || (exports.DocumentSymbolCollectorUseCase = {}));
46
+ const core_1 = require("../common/core");
54
47
  // This walker looks for symbols that are semantically equivalent
55
48
  // to the requested symbol.
56
49
  class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
57
- constructor(_program, symbolNames, _declarations, _cancellationToken, _startingNode, _treatModuleInImportAndFromImportSame = false, _skipUnreachableCode = true, _useCase = DocumentSymbolCollectorUseCase.Reference) {
50
+ constructor(_program, symbolNames, declarations, _startingNode, _cancellationToken, options) {
51
+ var _a, _b, _c, _d, _e;
58
52
  super();
59
53
  this._program = _program;
60
- this._declarations = _declarations;
61
- this._cancellationToken = _cancellationToken;
62
54
  this._startingNode = _startingNode;
63
- this._treatModuleInImportAndFromImportSame = _treatModuleInImportAndFromImportSame;
64
- this._skipUnreachableCode = _skipUnreachableCode;
65
- this._useCase = _useCase;
55
+ this._cancellationToken = _cancellationToken;
66
56
  this._results = [];
67
57
  this._dunderAllNameNodes = new Set();
68
58
  this._symbolNames = new Set();
59
+ this._declarations = [];
69
60
  // Start with the symbols passed in
70
61
  symbolNames.forEach((s) => this._symbolNames.add(s));
62
+ this._declarations.push(...declarations);
63
+ this._treatModuleInImportAndFromImportSame = (_a = options === null || options === void 0 ? void 0 : options.treatModuleInImportAndFromImportSame) !== null && _a !== void 0 ? _a : false;
64
+ this._skipUnreachableCode = (_b = options === null || options === void 0 ? void 0 : options.skipUnreachableCode) !== null && _b !== void 0 ? _b : true;
65
+ this._useCase = (_c = options === null || options === void 0 ? void 0 : options.useCase) !== null && _c !== void 0 ? _c : extensibility_1.ReferenceUseCase.References;
66
+ this._usageProviders =
67
+ (_d = options === null || options === void 0 ? void 0 : options.providers) !== null && _d !== void 0 ? _d : ((_e = this._program.serviceProvider.tryGet(serviceProviderExtensions_1.ServiceKeys.symbolUsageProviderFactory)) !== null && _e !== void 0 ? _e : [])
68
+ .map((f) => f.tryCreateProvider(this._useCase, declarations, this._cancellationToken))
69
+ .filter(core_1.isDefined);
70
+ if ((options === null || options === void 0 ? void 0 : options.providers) === undefined) {
71
+ // Check whether we need to add new symbol names and declarations.
72
+ this._usageProviders.forEach((p) => {
73
+ p.appendSymbolNamesTo(this._symbolNames);
74
+ p.appendDeclarationsTo(this._declarations);
75
+ });
76
+ }
71
77
  // Don't report strings in __all__ right away, that will
72
78
  // break the assumption on the result ordering.
73
79
  this._setDunderAllNodes(this._startingNode);
74
- // Check if one of our symbols is __init__ and we
75
- // have a class declaration in the list and we are
76
- // computing symbols for references and not rename.
77
- const initDeclaration = _declarations.find((d) => d.type === 5 /* Function */ && d.node.name.value === '__init__');
78
- if (initDeclaration && _useCase === DocumentSymbolCollectorUseCase.Reference) {
79
- const classDeclaration = _declarations.find((d) => d.type === 6 /* Class */);
80
- if (classDeclaration) {
81
- this._initFunction = initDeclaration.node;
82
- this._symbolNames.add(classDeclaration.node.name.value);
83
- }
84
- }
85
80
  }
86
- static collectFromNode(program, node, cancellationToken, startingNode, treatModuleInImportAndFromImportSame = false, skipUnreachableCode = true, useCase = DocumentSymbolCollectorUseCase.Reference) {
87
- const declarations = this.getDeclarationsForNode(program, node,
88
- /* resolveLocalName */ true, useCase, cancellationToken);
81
+ static collectFromNode(program, node, cancellationToken, startingNode, options) {
82
+ const declarations = this.getDeclarationsForNode(program, node, /* resolveLocalName */ true, cancellationToken);
89
83
  startingNode = startingNode !== null && startingNode !== void 0 ? startingNode : (0, parseTreeUtils_1.getModuleNode)(node);
90
84
  if (!startingNode) {
91
85
  return [];
92
86
  }
93
- const collector = new DocumentSymbolCollector(program, [node.value], declarations, cancellationToken, startingNode, treatModuleInImportAndFromImportSame, skipUnreachableCode, useCase);
87
+ const collector = new DocumentSymbolCollector(program, [node.value], declarations, startingNode, cancellationToken, options);
94
88
  return collector.collect();
95
89
  }
96
- static getDeclarationsForNode(program, node, resolveLocalName, useCase, token) {
90
+ static getDeclarationsForNode(program, node, resolveLocalName, token) {
97
91
  (0, cancellationUtils_1.throwIfCancellationRequested)(token);
98
92
  const evaluator = program.evaluator;
99
93
  if (!evaluator) {
100
94
  return [];
101
95
  }
102
- const declarations = this._getDeclarationsForNode(program.serviceProvider, node, useCase, evaluator, token,
103
- /* skipUnreachableCode */ false);
96
+ const declarations = getDeclarationsForNameNode(evaluator, node, /* skipUnreachableCode */ false);
104
97
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
105
98
  const resolvedDeclarations = [];
106
99
  const sourceMapper = program.getSourceMapper(fileInfo.filePath, token);
107
100
  declarations.forEach((decl) => {
108
101
  const resolvedDecl = evaluator.resolveAliasDeclaration(decl, resolveLocalName);
109
102
  if (resolvedDecl) {
110
- this._addIfUnique(resolvedDeclarations, resolvedDecl);
103
+ addDeclarationIfUnique(resolvedDeclarations, resolvedDecl);
111
104
  if (sourceMapper && (0, sourceMapper_1.isStubFile)(resolvedDecl.path)) {
112
105
  const implDecls = sourceMapper.findDeclarations(resolvedDecl);
113
106
  for (const implDecl of implDecls) {
114
107
  if (implDecl && implDecl.path) {
115
- this._addIfUnique(resolvedDeclarations, implDecl);
108
+ addDeclarationIfUnique(resolvedDeclarations, implDecl);
116
109
  }
117
110
  }
118
111
  }
@@ -144,7 +137,7 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
144
137
  symbol === null || symbol === void 0 ? void 0 : symbol.getDeclarations().filter((d) => !(0, declaration_1.isAliasDeclaration)(d)).forEach((decl) => {
145
138
  const resolvedDecl = evaluator.resolveAliasDeclaration(decl, resolveLocalName);
146
139
  if (resolvedDecl) {
147
- DocumentSymbolCollector._addIfUnique(declarations, resolvedDecl);
140
+ addDeclarationIfUnique(declarations, resolvedDecl);
148
141
  }
149
142
  });
150
143
  }
@@ -165,10 +158,10 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
165
158
  return false;
166
159
  }
167
160
  if (this._declarations.length > 0) {
168
- const declarations = DocumentSymbolCollector._getDeclarationsForNode(this._program.serviceProvider, node, this._useCase, this._evaluator, this._cancellationToken, this._skipUnreachableCode);
161
+ const declarations = getDeclarationsForNameNode(this._evaluator, node, this._skipUnreachableCode);
169
162
  if (declarations && declarations.length > 0) {
170
163
  // Does this name share a declaration with the symbol of interest?
171
- if (declarations.some((decl) => this._resultsContainsDeclaration(decl, node))) {
164
+ if (this._resultsContainsDeclaration(node, declarations)) {
172
165
  this._addResult(node);
173
166
  }
174
167
  }
@@ -204,52 +197,32 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
204
197
  const range = node.nodeType === 38 /* Name */ ? node : (0, parseTreeUtils_1.getStringNodeValueRange)(node);
205
198
  this._results.push({ node, range });
206
199
  }
207
- _isDeclarationAllowed(resolvedDecl, referenceNode) {
208
- var _a;
209
- // Declaration is allowed if:
210
- // Matches one of our declarations.
211
- // and --
212
- // That match is the right kind.
213
- const match = this._declarations.find((decl) => (0, declarationUtils_1.areDeclarationsSame)(decl, resolvedDecl, this._treatModuleInImportAndFromImportSame,
200
+ _isDeclarationAllowed(resolvedDecl) {
201
+ return this._declarations.some((decl) => (0, declarationUtils_1.areDeclarationsSame)(decl, resolvedDecl, this._treatModuleInImportAndFromImportSame,
214
202
  /* skipRangeForAliases */ true));
215
- if (match) {
216
- // Special case for __init__ being one of our symbol names and we
217
- // have a class name as the other.
218
- if (this._initFunction) {
219
- // If this is a method, must be an __init__ reference.
220
- if (match.type === 5 /* Function */) {
221
- return true;
222
- }
223
- else if (match.type === 6 /* Class */) {
224
- // If this is a class type match, only match on class calls.
225
- // Meaning something like so:
226
- // a = ClassA()
227
- return ((_a = referenceNode.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 9 /* Call */;
228
- }
203
+ }
204
+ _resultsContainsDeclaration(usage, declarations) {
205
+ const results = [...declarations];
206
+ this._usageProviders.forEach((p) => p.appendDeclarationsAt(usage, declarations, results));
207
+ return results.some((declaration) => {
208
+ // Resolve the declaration.
209
+ const resolvedDecl = this._evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ false);
210
+ if (!resolvedDecl) {
229
211
  return false;
230
212
  }
231
- return true;
232
- }
233
- return false;
234
- }
235
- _resultsContainsDeclaration(declaration, referenceNode) {
236
- // Resolve the declaration.
237
- const resolvedDecl = this._evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ false);
238
- if (!resolvedDecl) {
239
- return false;
240
- }
241
- // The reference results declarations are already resolved, so we don't
242
- // need to call resolveAliasDeclaration on them.
243
- if (this._isDeclarationAllowed(resolvedDecl, referenceNode)) {
244
- return true;
245
- }
246
- // We didn't find the declaration using local-only alias resolution. Attempt
247
- // it again by fully resolving the alias.
248
- const resolvedDeclNonlocal = this._getResolveAliasDeclaration(resolvedDecl);
249
- if (!resolvedDeclNonlocal || resolvedDeclNonlocal === resolvedDecl) {
250
- return false;
251
- }
252
- return this._isDeclarationAllowed(resolvedDeclNonlocal, referenceNode);
213
+ // The reference results declarations are already resolved, so we don't
214
+ // need to call resolveAliasDeclaration on them.
215
+ if (this._isDeclarationAllowed(resolvedDecl)) {
216
+ return true;
217
+ }
218
+ // We didn't find the declaration using local-only alias resolution. Attempt
219
+ // it again by fully resolving the alias.
220
+ const resolvedDeclNonlocal = this._getResolveAliasDeclaration(resolvedDecl);
221
+ if (!resolvedDeclNonlocal || resolvedDeclNonlocal === resolvedDecl) {
222
+ return false;
223
+ }
224
+ return this._isDeclarationAllowed(resolvedDeclNonlocal);
225
+ });
253
226
  }
254
227
  _getResolveAliasDeclaration(declaration) {
255
228
  // TypeEvaluator.resolveAliasDeclaration only resolve alias in AliasDeclaration in the form of
@@ -290,210 +263,140 @@ class DocumentSymbolCollector extends parseTreeWalker_1.ParseTreeWalker {
290
263
  if (!symbolInScope) {
291
264
  return;
292
265
  }
293
- if (!symbolInScope.symbol.getDeclarations().some((d) => this._resultsContainsDeclaration(d, stringNode))) {
266
+ if (!this._resultsContainsDeclaration(stringNode, symbolInScope.symbol.getDeclarations())) {
294
267
  return;
295
268
  }
296
269
  this._dunderAllNameNodes.add(stringNode);
297
270
  });
298
271
  }
299
- static _addIfUnique(declarations, itemToAdd) {
300
- for (const def of declarations) {
301
- if ((0, declarationUtils_1.areDeclarationsSame)(def, itemToAdd,
302
- /* treatModuleInImportAndFromImportSame */ false,
303
- /* skipRangeForAliases */ true)) {
304
- return;
305
- }
306
- }
307
- declarations.push(itemToAdd);
272
+ }
273
+ exports.DocumentSymbolCollector = DocumentSymbolCollector;
274
+ function getDeclarationsForNameNode(evaluator, node, skipUnreachableCode = true) {
275
+ var _a;
276
+ // This can handle symbols brought in by wildcard (import *) as long as the declarations that the symbol collector
277
+ // compares against point to the actual alias declaration, not one that uses local name (ex, import alias)
278
+ if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 37 /* ModuleName */) {
279
+ return _getDeclarationsForNonModuleNameNode(evaluator, node, skipUnreachableCode);
308
280
  }
309
- static _getDeclarationsForInitNode(node, evaluator) {
310
- var _a;
311
- const parent = ParseTreeUtils.getEnclosingClassOrFunction(node.parent);
312
- // See what type of __init__ we're at.
313
- if ((parent === null || parent === void 0 ? void 0 : parent.nodeType) === 10 /* Class */) {
314
- // This is a def for '__init__'. We should include the class name too.
315
- return this._getDeclarationsForNonModuleNameNode(parent.name, evaluator);
316
- }
317
- else if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 35 /* MemberAccess */ &&
318
- ((node.parent.leftExpression.nodeType === 9 /* Call */ &&
319
- node.parent.leftExpression.leftExpression.nodeType === 38 /* Name */ &&
320
- node.parent.leftExpression.leftExpression.value === 'super') ||
321
- (node.parent.leftExpression.nodeType === 38 /* Name */ &&
322
- node.parent.leftExpression.value === 'super'))) {
323
- // We're on the 'super().__init__' call.
324
- const decls = evaluator.getDeclarationsForNameNode(node, /* skipUnreachableCode */ true);
325
- if (decls && decls.length > 0 && decls[0].node.parent) {
326
- // Parent node of the decl should be the class
327
- const classNode = ParseTreeUtils.getEnclosingClass(decls[0].node.parent);
328
- if (classNode) {
329
- return this._getDeclarationsForNonModuleNameNode(classNode.name, evaluator);
330
- }
331
- }
281
+ return _getDeclarationsForModuleNameNode(evaluator, node);
282
+ }
283
+ exports.getDeclarationsForNameNode = getDeclarationsForNameNode;
284
+ function addDeclarationIfUnique(declarations, itemToAdd) {
285
+ for (const def of declarations) {
286
+ if ((0, declarationUtils_1.areDeclarationsSame)(def, itemToAdd,
287
+ /* treatModuleInImportAndFromImportSame */ false,
288
+ /* skipRangeForAliases */ true)) {
289
+ return;
332
290
  }
333
- return [];
334
291
  }
335
- static _getDeclarationsForNode(serviceProvider, node, useCase, evaluator, token, skipUnreachableCode = true) {
336
- var _a;
337
- let result = [];
338
- // This can handle symbols brought in by wildcard (import *) as long as the declarations that the symbol collector
339
- // compares against point to the actual alias declaration, not one that uses local name (ex, import alias)
340
- if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 37 /* ModuleName */) {
341
- result = this._getDeclarationsForNonModuleNameNode(node, evaluator, skipUnreachableCode);
342
- // Special case for __init__. Might be __init__ on a class.
343
- if (node.value === '__init__' && useCase === DocumentSymbolCollectorUseCase.Reference && node.parent) {
344
- (0, collectionUtils_1.appendArray)(result, this._getDeclarationsForInitNode(node, evaluator));
345
- }
346
- }
347
- else {
348
- result = this._getDeclarationsForModuleNameNode(node, evaluator);
349
- }
350
- const providers = serviceProvider.tryGet(serviceProviderExtensions_1.ServiceKeys.symbolDeclarationProviders);
351
- if (providers) {
352
- providers.forEach((p) => {
353
- const declUseCase = useCase === DocumentSymbolCollectorUseCase.Rename
354
- ? extensibility_1.DeclarationUseCase.Rename
355
- : extensibility_1.DeclarationUseCase.References;
356
- const extras = p.tryGetDeclarations(evaluator, node, node.start, declUseCase, token);
357
- if (extras && extras.length > 0) {
358
- (0, collectionUtils_1.appendArray)(result, extras);
359
- }
360
- });
361
- }
362
- return result;
292
+ declarations.push(itemToAdd);
293
+ }
294
+ exports.addDeclarationIfUnique = addDeclarationIfUnique;
295
+ function _getDeclarationsForNonModuleNameNode(evaluator, node, skipUnreachableCode = true) {
296
+ var _a, _b;
297
+ (0, debug_1.assert)(((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 37 /* ModuleName */);
298
+ let decls = evaluator.getDeclarationsForNameNode(node, skipUnreachableCode) || [];
299
+ if (((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 23 /* ImportFromAs */) {
300
+ // Make sure we get the decl for this specific "from import" statement
301
+ decls = decls.filter((d) => d.node === node.parent);
363
302
  }
364
- static _getDeclarationsForNonModuleNameNode(node, evaluator, skipUnreachableCode = true) {
365
- var _a, _b;
366
- (0, debug_1.assert)(((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 37 /* ModuleName */);
367
- let decls = evaluator.getDeclarationsForNameNode(node, skipUnreachableCode) || [];
368
- if (((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 23 /* ImportFromAs */) {
369
- // Make sure we get the decl for this specific "from import" statement
370
- decls = decls.filter((d) => d.node === node.parent);
371
- }
372
- // If we can't get decl, see whether we can get type from the node.
373
- // Some might have synthesized type for the node such as subModule in import X.Y statement.
374
- if (decls.length === 0) {
375
- const type = evaluator.getType(node);
376
- if ((type === null || type === void 0 ? void 0 : type.category) === 8 /* Module */) {
377
- // Synthesize decl for the module.
378
- return [(0, declarationUtils_1.createSynthesizedAliasDeclaration)(type.filePath)];
379
- }
380
- }
381
- // We would like to make X in import X and import X.Y as Y to match, but path for
382
- // X in import X and one in import X.Y as Y might not match since path in X.Y will point
383
- // to X.Y rather than X if import statement has an alias.
384
- // so, for such case, we put synthesized one so we can treat X in both statement same.
385
- for (const aliasDecl of decls.filter((d) => (0, declaration_1.isAliasDeclaration)(d) && !d.loadSymbolsFromPath)) {
386
- const node = aliasDecl.node;
387
- if (node.nodeType === 23 /* ImportFromAs */) {
388
- // from ... import X case, decl in the submodule fallback has the path.
389
- continue;
390
- }
391
- (0, collectionUtils_1.appendArray)(decls, evaluator.getDeclarationsForNameNode(node.module.nameParts[0], skipUnreachableCode) || []);
303
+ // If we can't get decl, see whether we can get type from the node.
304
+ // Some might have synthesized type for the node such as subModule in import X.Y statement.
305
+ if (decls.length === 0) {
306
+ const type = evaluator.getType(node);
307
+ if ((type === null || type === void 0 ? void 0 : type.category) === 8 /* Module */) {
308
+ // Synthesize decl for the module.
309
+ return [(0, declarationUtils_1.createSynthesizedAliasDeclaration)(type.filePath)];
392
310
  }
393
- // For now, we only support function overriding.
394
- for (const decl of decls.filter((d) => (0, declaration_1.isFunctionDeclaration)(d) && d.isMethod && d.node.name.value.length > 0)) {
395
- const methodDecl = decl;
396
- const enclosingClass = ParseTreeUtils.getEnclosingClass(methodDecl.node);
397
- const classResults = enclosingClass ? evaluator.getTypeOfClass(enclosingClass) : undefined;
398
- if (!classResults) {
399
- continue;
400
- }
401
- // Skip init and new as being overloads. They're not really overloads.
402
- if (methodDecl.node.name.value === '__init__' || methodDecl.node.name.value === '__new__') {
403
- continue;
404
- }
405
- for (const mroClass of classResults.classType.details.mro) {
406
- if ((0, types_1.isInstantiableClass)(mroClass)) {
407
- const currentMember = (0, typeUtils_1.lookUpClassMember)(mroClass, methodDecl.node.name.value);
408
- const baseMember = (0, typeUtils_1.lookUpClassMember)(mroClass, methodDecl.node.name.value, 1 /* SkipOriginalClass */);
409
- if (currentMember && !baseMember) {
410
- // Found base decl of the overridden method. Hold onto the decls.
411
- currentMember.symbol
412
- .getDeclarations()
413
- .filter((d) => (0, declaration_1.isFunctionDeclaration)(d) && d.isMethod)
414
- .forEach((d) => this._addIfUnique(decls, d));
415
- }
416
- }
417
- }
311
+ }
312
+ // We would like to make X in import X and import X.Y as Y to match, but path for
313
+ // X in import X and one in import X.Y as Y might not match since path in X.Y will point
314
+ // to X.Y rather than X if import statement has an alias.
315
+ // so, for such case, we put synthesized one so we can treat X in both statement same.
316
+ for (const aliasDecl of decls.filter((d) => (0, declaration_1.isAliasDeclaration)(d) && !d.loadSymbolsFromPath)) {
317
+ const node = aliasDecl.node;
318
+ if (node.nodeType === 23 /* ImportFromAs */) {
319
+ // from ... import X case, decl in the submodule fallback has the path.
320
+ continue;
418
321
  }
419
- return decls;
322
+ (0, collectionUtils_1.appendArray)(decls, evaluator.getDeclarationsForNameNode(node.module.nameParts[0], skipUnreachableCode) || []);
420
323
  }
421
- static _getDeclarationsForModuleNameNode(node, evaluator) {
422
- var _a, _b, _c, _d, _e;
423
- (0, debug_1.assert)(((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 37 /* ModuleName */);
424
- // We don't have symbols corresponding to ModuleName in our system since those
425
- // are not referenceable. but in "find all reference", we want to match those
426
- // if it refers to the same module file. Code below handles different kind of
427
- // ModuleName cases.
428
- const moduleName = node.parent;
429
- if (((_b = moduleName.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 21 /* ImportAs */ ||
430
- ((_c = moduleName.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 22 /* ImportFrom */) {
431
- const index = moduleName.nameParts.findIndex((n) => n === node);
432
- // Special case, first module name part.
433
- if (index === 0) {
434
- // 1. import X or from X import ...
435
- const decls = [];
436
- // First, we need to put decls for module names type evaluator synthesized so that
437
- // we can match both "import X" and "from X import ..."
438
- (0, collectionUtils_1.appendArray)(decls, ((_d = evaluator
439
- .getDeclarationsForNameNode(moduleName.nameParts[0])) === null || _d === void 0 ? void 0 : _d.filter((d) => (0, declaration_1.isAliasDeclaration)(d))) || []);
440
- if (decls.length === 0 || moduleName.parent.nodeType !== 21 /* ImportAs */) {
441
- return decls;
324
+ return decls;
325
+ }
326
+ function _getDeclarationsForModuleNameNode(evaluator, node) {
327
+ var _a, _b, _c, _d, _e;
328
+ (0, debug_1.assert)(((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 37 /* ModuleName */);
329
+ // We don't have symbols corresponding to ModuleName in our system since those
330
+ // are not referenceable. but in "find all reference", we want to match those
331
+ // if it refers to the same module file. Code below handles different kind of
332
+ // ModuleName cases.
333
+ const moduleName = node.parent;
334
+ if (((_b = moduleName.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 21 /* ImportAs */ ||
335
+ ((_c = moduleName.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 22 /* ImportFrom */) {
336
+ const index = moduleName.nameParts.findIndex((n) => n === node);
337
+ // Special case, first module name part.
338
+ if (index === 0) {
339
+ // 1. import X or from X import ...
340
+ const decls = [];
341
+ // First, we need to put decls for module names type evaluator synthesized so that
342
+ // we can match both "import X" and "from X import ..."
343
+ (0, collectionUtils_1.appendArray)(decls, ((_d = evaluator.getDeclarationsForNameNode(moduleName.nameParts[0])) === null || _d === void 0 ? void 0 : _d.filter((d) => (0, declaration_1.isAliasDeclaration)(d))) ||
344
+ []);
345
+ if (decls.length === 0 || moduleName.parent.nodeType !== 21 /* ImportAs */) {
346
+ return decls;
347
+ }
348
+ // If module name belong to "import xxx" not "from xxx", then see whether
349
+ // we can get regular decls (decls created from binder, not synthesized from type eval)
350
+ // from symbol as well.
351
+ // ex, import X as x
352
+ const isImportAsWithAlias = moduleName.nameParts.length === 1 &&
353
+ moduleName.parent.nodeType === 21 /* ImportAs */ &&
354
+ !!moduleName.parent.alias;
355
+ // if "import" has alias, symbol is assigned to alias, not the module.
356
+ const importName = isImportAsWithAlias
357
+ ? moduleName.parent.alias.value
358
+ : moduleName.nameParts[0].value;
359
+ // And we also need to re-use "decls for X" binder has created
360
+ // so that it matches with decls type evaluator returns for "references for X".
361
+ // ex) import X or from .X import ... in init file and etc.
362
+ const symbolWithScope = (_e = ScopeUtils.getScopeForNode(node)) === null || _e === void 0 ? void 0 : _e.lookUpSymbolRecursive(importName);
363
+ if (symbolWithScope && moduleName.nameParts.length === 1) {
364
+ let declsFromSymbol = [];
365
+ (0, collectionUtils_1.appendArray)(declsFromSymbol, symbolWithScope.symbol.getDeclarations().filter((d) => (0, declaration_1.isAliasDeclaration)(d)));
366
+ // If symbols are re-used, then find one that belong to this import statement.
367
+ if (declsFromSymbol.length > 1) {
368
+ declsFromSymbol = declsFromSymbol.filter((d) => {
369
+ d = d;
370
+ if (d.firstNamePart !== undefined) {
371
+ // For multiple import statements with sub modules, decl can be re-used.
372
+ // ex) import X.Y and import X.Z or from .X import ... in init file.
373
+ // Decls for X will be reused for both import statements, and node will point
374
+ // to first import statement. For those case, use firstNamePart instead to check.
375
+ return d.firstNamePart === moduleName.nameParts[0].value;
376
+ }
377
+ return d.node === moduleName.parent;
378
+ });
442
379
  }
443
- // If module name belong to "import xxx" not "from xxx", then see whether
444
- // we can get regular decls (decls created from binder, not synthesized from type eval)
445
- // from symbol as well.
446
380
  // ex, import X as x
447
- const isImportAsWithAlias = moduleName.nameParts.length === 1 &&
448
- moduleName.parent.nodeType === 21 /* ImportAs */ &&
449
- !!moduleName.parent.alias;
450
- // if "import" has alias, symbol is assigned to alias, not the module.
451
- const importName = isImportAsWithAlias
452
- ? moduleName.parent.alias.value
453
- : moduleName.nameParts[0].value;
454
- // And we also need to re-use "decls for X" binder has created
455
- // so that it matches with decls type evaluator returns for "references for X".
456
- // ex) import X or from .X import ... in init file and etc.
457
- const symbolWithScope = (_e = ScopeUtils.getScopeForNode(node)) === null || _e === void 0 ? void 0 : _e.lookUpSymbolRecursive(importName);
458
- if (symbolWithScope && moduleName.nameParts.length === 1) {
459
- let declsFromSymbol = [];
460
- (0, collectionUtils_1.appendArray)(declsFromSymbol, symbolWithScope.symbol.getDeclarations().filter((d) => (0, declaration_1.isAliasDeclaration)(d)));
461
- // If symbols are re-used, then find one that belong to this import statement.
462
- if (declsFromSymbol.length > 1) {
463
- declsFromSymbol = declsFromSymbol.filter((d) => {
464
- d = d;
465
- if (d.firstNamePart !== undefined) {
466
- // For multiple import statements with sub modules, decl can be re-used.
467
- // ex) import X.Y and import X.Z or from .X import ... in init file.
468
- // Decls for X will be reused for both import statements, and node will point
469
- // to first import statement. For those case, use firstNamePart instead to check.
470
- return d.firstNamePart === moduleName.nameParts[0].value;
471
- }
472
- return d.node === moduleName.parent;
473
- });
474
- }
475
- // ex, import X as x
476
- // We have decls for the alias "x" not the module name "X". Convert decls for the "X"
477
- if (isImportAsWithAlias) {
478
- declsFromSymbol = (0, declarationUtils_1.getDeclarationsWithUsesLocalNameRemoved)(declsFromSymbol);
479
- }
480
- (0, collectionUtils_1.appendArray)(decls, declsFromSymbol);
381
+ // We have decls for the alias "x" not the module name "X". Convert decls for the "X"
382
+ if (isImportAsWithAlias) {
383
+ declsFromSymbol = (0, declarationUtils_1.getDeclarationsWithUsesLocalNameRemoved)(declsFromSymbol);
481
384
  }
482
- return decls;
483
- }
484
- if (index > 0) {
485
- // 2. import X.Y or from X.Y import ....
486
- // For submodule "Y", we just use synthesized decls from type evaluator.
487
- // Decls for these sub module don't actually exist in the system. Instead, symbol for Y in
488
- // "import X.Y" hold onto synthesized module type (without any decl).
489
- // And "from X.Y import ..." doesn't have any symbol associated module names.
490
- // they can't be referenced in the module.
491
- return evaluator.getDeclarationsForNameNode(moduleName.nameParts[index]) || [];
385
+ (0, collectionUtils_1.appendArray)(decls, declsFromSymbol);
492
386
  }
493
- return [];
387
+ return decls;
388
+ }
389
+ if (index > 0) {
390
+ // 2. import X.Y or from X.Y import ....
391
+ // For submodule "Y", we just use synthesized decls from type evaluator.
392
+ // Decls for these sub module don't actually exist in the system. Instead, symbol for Y in
393
+ // "import X.Y" hold onto synthesized module type (without any decl).
394
+ // And "from X.Y import ..." doesn't have any symbol associated module names.
395
+ // they can't be referenced in the module.
396
+ return evaluator.getDeclarationsForNameNode(moduleName.nameParts[index]) || [];
494
397
  }
495
398
  return [];
496
399
  }
400
+ return [];
497
401
  }
498
- exports.DocumentSymbolCollector = DocumentSymbolCollector;
499
402
  //# sourceMappingURL=documentSymbolCollector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"documentSymbolCollector.js","sourceRoot":"","sources":["../../../src/languageService/documentSymbolCollector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documentSymbolCollector.js","sourceRoot":"","sources":["../../../src/languageService/documentSymbolCollector.ts"],"names":[],"mappings":"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"}