@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.
- package/dist/analyzer/analyzerFileInfo.d.ts +4 -1
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +7 -4
- package/dist/analyzer/backgroundAnalysisProgram.js +22 -7
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.js +12 -7
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +58 -7
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +6 -0
- package/dist/analyzer/constructors.js +456 -0
- package/dist/analyzer/constructors.js.map +1 -0
- package/dist/analyzer/dataClasses.js +89 -2
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +6 -1
- package/dist/analyzer/declarationUtils.js +10 -8
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/enums.js +54 -8
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +15 -15
- package/dist/analyzer/importResolver.js +477 -477
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +2 -2
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.d.ts +1 -1
- package/dist/analyzer/namedTuples.js +30 -42
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.d.ts +16 -0
- package/dist/analyzer/operations.js +749 -0
- package/dist/analyzer/operations.js.map +1 -0
- package/dist/analyzer/packageTypeReport.d.ts +2 -1
- package/dist/analyzer/packageTypeReport.js +2 -1
- package/dist/analyzer/packageTypeReport.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.d.ts +1 -1
- package/dist/analyzer/packageTypeVerifier.js +27 -13
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +4 -2
- package/dist/analyzer/parseTreeUtils.js +32 -1
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +16 -0
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +29 -53
- package/dist/analyzer/program.js +1050 -1649
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.js +1 -1
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +14 -35
- package/dist/analyzer/service.js +92 -121
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +14 -49
- package/dist/analyzer/sourceFile.js +271 -291
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -2
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +417 -1570
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +44 -9
- package/dist/analyzer/typeEvaluatorTypes.js +33 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +5 -9
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +3 -0
- package/dist/analyzer/typeUtils.js +66 -9
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.d.ts +5 -5
- package/dist/analyzer/typeVarContext.js +7 -0
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typedDicts.js +2 -2
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +4 -2
- package/dist/analyzer/types.js +7 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +10 -11
- package/dist/backgroundAnalysisBase.js +87 -87
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +8 -8
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/commands/quickActionCommand.js +4 -1
- package/dist/commands/quickActionCommand.js.map +1 -1
- package/dist/common/cancellationUtils.d.ts +1 -1
- package/dist/common/cancellationUtils.js +9 -9
- package/dist/common/cancellationUtils.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +1 -2
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +2 -2
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/console.d.ts +5 -9
- package/dist/common/console.js +46 -33
- package/dist/common/console.js.map +1 -1
- package/dist/common/deferred.js +10 -10
- package/dist/common/deferred.js.map +1 -1
- package/dist/common/extensibility.d.ts +27 -5
- package/dist/common/extensibility.js +1 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileBasedCancellationUtils.js +5 -5
- package/dist/common/fileBasedCancellationUtils.js.map +1 -1
- package/dist/common/fileSystem.d.ts +12 -10
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/fullAccessHost.d.ts +3 -3
- package/dist/common/fullAccessHost.js +6 -6
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/pathUtils.d.ts +13 -13
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/realFileSystem.js +12 -7
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/uriParser.d.ts +2 -2
- package/dist/common/uriParser.js +3 -3
- package/dist/common/uriParser.js.map +1 -1
- package/dist/common/workspaceEditUtils.d.ts +5 -5
- package/dist/common/workspaceEditUtils.js +7 -4
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +32 -31
- package/dist/languageServerBase.js +278 -345
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +0 -1
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.d.ts +16 -12
- package/dist/languageService/callHierarchyProvider.js +125 -41
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +10 -13
- package/dist/languageService/completionProvider.js +21 -10
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.d.ts +23 -9
- package/dist/languageService/definitionProvider.js +116 -91
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.d.ts +8 -3
- package/dist/languageService/documentHighlightProvider.js +17 -6
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +6 -7
- package/dist/languageService/documentSymbolCollector.js +21 -11
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +5 -3
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +4 -3
- package/dist/languageService/hoverProvider.js +30 -36
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/navigationUtils.d.ts +6 -0
- package/dist/languageService/navigationUtils.js +28 -0
- package/dist/languageService/navigationUtils.js.map +1 -0
- package/dist/languageService/quickActions.d.ts +2 -2
- package/dist/languageService/quickActions.js +12 -1
- package/dist/languageService/quickActions.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +13 -12
- package/dist/languageService/referencesProvider.js +102 -16
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.d.ts +17 -0
- package/dist/languageService/renameProvider.js +143 -0
- package/dist/languageService/renameProvider.js.map +1 -0
- package/dist/languageService/signatureHelpProvider.d.ts +19 -23
- package/dist/languageService/signatureHelpProvider.js +111 -18
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +17 -14
- package/dist/localization/localize.js +4 -6
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +5 -6
- package/dist/parser/characterStream.d.ts +3 -3
- package/dist/parser/characterStream.js +12 -12
- package/dist/parser/characterStream.js.map +1 -1
- package/dist/parser/parser.d.ts +1 -1
- package/dist/parser/parser.js.map +1 -1
- package/dist/pyright.js +57 -54
- package/dist/pyright.js.map +1 -1
- package/dist/pyrightFileSystem.d.ts +1 -1
- package/dist/pyrightFileSystem.js +21 -21
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +6 -6
- package/dist/readonlyAugmentedFileSystem.js +28 -28
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.js +6 -6
- package/dist/server.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +1 -1
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +1 -1
- package/dist/tests/documentSymbolCollector.test.js +3 -3
- package/dist/tests/documentSymbolCollector.test.js.map +1 -1
- package/dist/tests/fourslash/fourslash.d.ts +4 -4
- package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js +1 -1
- package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -3
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +11 -11
- package/dist/tests/harness/fourslash/testState.js +123 -113
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +8 -8
- package/dist/tests/harness/vfs/filesystem.js +68 -68
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +34 -0
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.js +5 -1
- package/dist/tests/signatureHelp.test.js.map +1 -1
- package/dist/tests/sourceFile.test.js +2 -2
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/testStateUtils.d.ts +2 -2
- package/dist/tests/testStateUtils.js +39 -9
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +8 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +13 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +2 -2
- package/dist/tests/typeEvaluator4.test.js +9 -1
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +4 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +84 -0
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/package.json +4 -4
- package/dist/languageService/indentationUtils.d.ts +0 -16
- package/dist/languageService/indentationUtils.js +0 -727
- package/dist/languageService/indentationUtils.js.map +0 -1
- package/dist/languageService/insertionPointUtils.d.ts +0 -9
- package/dist/languageService/insertionPointUtils.js +0 -132
- package/dist/languageService/insertionPointUtils.js.map +0 -1
- package/dist/languageService/renameModuleProvider.d.ts +0 -65
- package/dist/languageService/renameModuleProvider.js +0 -939
- package/dist/languageService/renameModuleProvider.js.map +0 -1
- package/dist/tests/indentationUtils.ptvs.test.d.ts +0 -1
- package/dist/tests/indentationUtils.ptvs.test.js +0 -324
- package/dist/tests/indentationUtils.ptvs.test.js.map +0 -1
- package/dist/tests/indentationUtils.reindent.test.d.ts +0 -1
- package/dist/tests/indentationUtils.reindent.test.js +0 -372
- package/dist/tests/indentationUtils.reindent.test.js.map +0 -1
- package/dist/tests/indentationUtils.test.d.ts +0 -1
- package/dist/tests/indentationUtils.test.js +0 -502
- package/dist/tests/indentationUtils.test.js.map +0 -1
- package/dist/tests/insertionPointUtils.test.d.ts +0 -1
- package/dist/tests/insertionPointUtils.test.js +0 -154
- package/dist/tests/insertionPointUtils.test.js.map +0 -1
- package/dist/tests/moveSymbol.importAdder.test.d.ts +0 -1
- package/dist/tests/moveSymbol.importAdder.test.js +0 -298
- package/dist/tests/moveSymbol.importAdder.test.js.map +0 -1
- package/dist/tests/moveSymbol.insertion.test.d.ts +0 -1
- package/dist/tests/moveSymbol.insertion.test.js +0 -537
- package/dist/tests/moveSymbol.insertion.test.js.map +0 -1
- package/dist/tests/moveSymbol.misc.test.d.ts +0 -1
- package/dist/tests/moveSymbol.misc.test.js +0 -169
- package/dist/tests/moveSymbol.misc.test.js.map +0 -1
- package/dist/tests/moveSymbol.updateReference.test.d.ts +0 -1
- package/dist/tests/moveSymbol.updateReference.test.js +0 -1057
- package/dist/tests/moveSymbol.updateReference.test.js.map +0 -1
- package/dist/tests/renameModule.folder.test.d.ts +0 -1
- package/dist/tests/renameModule.folder.test.js +0 -229
- package/dist/tests/renameModule.folder.test.js.map +0 -1
- package/dist/tests/renameModule.fromImports.test.d.ts +0 -1
- package/dist/tests/renameModule.fromImports.test.js +0 -790
- package/dist/tests/renameModule.fromImports.test.js.map +0 -1
- package/dist/tests/renameModule.imports.test.d.ts +0 -1
- package/dist/tests/renameModule.imports.test.js +0 -380
- package/dist/tests/renameModule.imports.test.js.map +0 -1
- package/dist/tests/renameModule.misc.test.d.ts +0 -1
- package/dist/tests/renameModule.misc.test.js +0 -615
- package/dist/tests/renameModule.misc.test.js.map +0 -1
- package/dist/tests/renameModule.relativePath.test.d.ts +0 -1
- package/dist/tests/renameModule.relativePath.test.js +0 -231
- package/dist/tests/renameModule.relativePath.test.js.map +0 -1
- package/dist/tests/renameModuleTestUtils.d.ts +0 -4
- package/dist/tests/renameModuleTestUtils.js +0 -76
- 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
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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 (
|
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 =
|
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
|
-
|
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
|
-
|
149
|
-
|
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
|
-
|
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
|
-
|
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) =>
|
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
|
-
|
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
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
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
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
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
|
-
|
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.
|
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":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;AAIH,mEAA2D;AAC3D,yDAA8F;AAC9F,2EAA6D;AAC7D,2DAAoE;AAEpE,6CAAuE;AACvE,
|
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 {
|
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
|
-
|
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
|
-
|
40
|
-
|
41
|
-
|
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(
|
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(
|
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),
|
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;
|
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 '../
|
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[],
|
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,
|
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(
|
84
|
-
const declarations = this.getDeclarationsForNode(
|
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,
|
90
|
+
const collector = new DocumentSymbolCollector(program, [node.value], declarations, cancellationToken, startingNode, treatModuleInImportAndFromImportSame, skipUnreachableCode, useCase);
|
91
91
|
return collector.collect();
|
92
92
|
}
|
93
|
-
static getDeclarationsForNode(
|
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
|
-
|
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 =
|
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
|
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
|
}
|