@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
@@ -32,6 +32,7 @@ exports.ReferencesProvider = exports.FindReferencesTreeWalker = exports.Referenc
|
|
32
32
|
const declaration_1 = require("../analyzer/declaration");
|
33
33
|
const declarationUtils_1 = require("../analyzer/declarationUtils");
|
34
34
|
const ParseTreeUtils = __importStar(require("../analyzer/parseTreeUtils"));
|
35
|
+
const sourceFileInfoUtils_1 = require("../analyzer/sourceFileInfoUtils");
|
35
36
|
const symbolUtils_1 = require("../analyzer/symbolUtils");
|
36
37
|
const types_1 = require("../analyzer/types");
|
37
38
|
const cancellationUtils_1 = require("../common/cancellationUtils");
|
@@ -40,6 +41,7 @@ const debug_1 = require("../common/debug");
|
|
40
41
|
const positionUtils_1 = require("../common/positionUtils");
|
41
42
|
const textRange_1 = require("../common/textRange");
|
42
43
|
const documentSymbolCollector_1 = require("./documentSymbolCollector");
|
44
|
+
const navigationUtils_1 = require("./navigationUtils");
|
43
45
|
class ReferencesResult {
|
44
46
|
constructor(requiresGlobalSearch, nodeAtOffset, symbolNames, declarations, useCase, _reporter) {
|
45
47
|
this.requiresGlobalSearch = requiresGlobalSearch;
|
@@ -91,19 +93,24 @@ class ReferencesResult {
|
|
91
93
|
}
|
92
94
|
exports.ReferencesResult = ReferencesResult;
|
93
95
|
class FindReferencesTreeWalker {
|
94
|
-
constructor(
|
95
|
-
this.
|
96
|
+
constructor(_program, _filePath, _referencesResult, _includeDeclaration, _cancellationToken) {
|
97
|
+
this._program = _program;
|
96
98
|
this._filePath = _filePath;
|
97
99
|
this._referencesResult = _referencesResult;
|
98
100
|
this._includeDeclaration = _includeDeclaration;
|
99
|
-
this._evaluator = _evaluator;
|
100
101
|
this._cancellationToken = _cancellationToken;
|
102
|
+
this._parseResults = this._program.getParseResults(this._filePath);
|
101
103
|
}
|
102
|
-
findReferences(rootNode
|
103
|
-
|
104
|
+
findReferences(rootNode) {
|
105
|
+
var _a;
|
106
|
+
if (rootNode === void 0) { rootNode = (_a = this._parseResults) === null || _a === void 0 ? void 0 : _a.parseTree; }
|
107
|
+
const results = [];
|
108
|
+
if (!this._parseResults) {
|
109
|
+
return results;
|
110
|
+
}
|
111
|
+
const collector = new documentSymbolCollector_1.DocumentSymbolCollector(this._program, this._referencesResult.symbolNames, this._referencesResult.declarations, this._cancellationToken, rootNode,
|
104
112
|
/* treatModuleInImportAndFromImportSame */ true,
|
105
113
|
/* skipUnreachableCode */ false, this._referencesResult.useCase);
|
106
|
-
const results = [];
|
107
114
|
for (const result of collector.collect()) {
|
108
115
|
// Is it the same symbol?
|
109
116
|
if (this._includeDeclaration || result.node !== this._referencesResult.nodeAtOffset) {
|
@@ -121,20 +128,103 @@ class FindReferencesTreeWalker {
|
|
121
128
|
}
|
122
129
|
exports.FindReferencesTreeWalker = FindReferencesTreeWalker;
|
123
130
|
class ReferencesProvider {
|
124
|
-
|
131
|
+
constructor(_program, _token) {
|
132
|
+
this._program = _program;
|
133
|
+
this._token = _token;
|
134
|
+
// empty
|
135
|
+
}
|
136
|
+
reportReferences(filePath, position, includeDeclaration, resultReporter) {
|
137
|
+
const sourceFileInfo = this._program.getSourceFileInfo(filePath);
|
138
|
+
if (!sourceFileInfo) {
|
139
|
+
return;
|
140
|
+
}
|
141
|
+
const parseResults = this._program.getParseResults(filePath);
|
142
|
+
if (!parseResults) {
|
143
|
+
return;
|
144
|
+
}
|
145
|
+
const locations = [];
|
146
|
+
const reporter = resultReporter
|
147
|
+
? (range) => resultReporter.report((0, navigationUtils_1.convertDocumentRangesToLocation)(this._program.fileSystem, range))
|
148
|
+
: (range) => (0, collectionUtils_1.appendArray)(locations, (0, navigationUtils_1.convertDocumentRangesToLocation)(this._program.fileSystem, range));
|
149
|
+
const invokedFromUserFile = (0, sourceFileInfoUtils_1.isUserCode)(sourceFileInfo);
|
150
|
+
const referencesResult = ReferencesProvider.getDeclarationForPosition(this._program, filePath, position, reporter, documentSymbolCollector_1.DocumentSymbolCollectorUseCase.Reference, this._token,
|
151
|
+
// It is temporary fix for release.
|
152
|
+
Array.from((0, sourceFileInfoUtils_1.collectImportedByFiles)(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile));
|
153
|
+
if (!referencesResult) {
|
154
|
+
return;
|
155
|
+
}
|
156
|
+
// Do we need to do a global search as well?
|
157
|
+
if (!referencesResult.requiresGlobalSearch) {
|
158
|
+
this.addReferencesToResult(sourceFileInfo.sourceFile.getFilePath(), includeDeclaration, referencesResult);
|
159
|
+
}
|
160
|
+
for (const curSourceFileInfo of this._program.getSourceFileInfoList()) {
|
161
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
162
|
+
// "Find all references" will only include references from user code
|
163
|
+
// unless the file is explicitly opened in the editor or it is invoked from non user files.
|
164
|
+
if (curSourceFileInfo.isOpenByClient || !invokedFromUserFile || (0, sourceFileInfoUtils_1.isUserCode)(curSourceFileInfo)) {
|
165
|
+
// See if the reference symbol's string is located somewhere within the file.
|
166
|
+
// If not, we can skip additional processing for the file.
|
167
|
+
const fileContents = curSourceFileInfo.sourceFile.getFileContent();
|
168
|
+
if (!fileContents || referencesResult.symbolNames.some((s) => fileContents.search(s) >= 0)) {
|
169
|
+
this.addReferencesToResult(curSourceFileInfo.sourceFile.getFilePath(), includeDeclaration, referencesResult);
|
170
|
+
}
|
171
|
+
// This operation can consume significant memory, so check
|
172
|
+
// for situations where we need to discard the type cache.
|
173
|
+
this._program.handleMemoryHighUsage();
|
174
|
+
}
|
175
|
+
}
|
176
|
+
// Make sure to include declarations regardless where they are defined
|
177
|
+
// if includeDeclaration is set.
|
178
|
+
if (includeDeclaration) {
|
179
|
+
for (const decl of referencesResult.declarations) {
|
180
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
181
|
+
if (referencesResult.locations.some((l) => l.path === decl.path)) {
|
182
|
+
// Already included.
|
183
|
+
continue;
|
184
|
+
}
|
185
|
+
const declFileInfo = this._program.getSourceFileInfo(decl.path);
|
186
|
+
if (!declFileInfo) {
|
187
|
+
// The file the declaration belongs to doesn't belong to the program.
|
188
|
+
continue;
|
189
|
+
}
|
190
|
+
const tempResult = new ReferencesResult(referencesResult.requiresGlobalSearch, referencesResult.nodeAtOffset, referencesResult.symbolNames, referencesResult.declarations, referencesResult.useCase);
|
191
|
+
this.addReferencesToResult(declFileInfo.sourceFile.getFilePath(), includeDeclaration, tempResult);
|
192
|
+
for (const loc of tempResult.locations) {
|
193
|
+
// Include declarations only. And throw away any references
|
194
|
+
if (loc.path === decl.path && (0, textRange_1.doesRangeContain)(decl.range, loc.range)) {
|
195
|
+
referencesResult.addLocations(loc);
|
196
|
+
}
|
197
|
+
}
|
198
|
+
}
|
199
|
+
}
|
200
|
+
return locations;
|
201
|
+
}
|
202
|
+
addReferencesToResult(filePath, includeDeclaration, referencesResult) {
|
203
|
+
const parseResults = this._program.getParseResults(filePath);
|
204
|
+
if (!parseResults) {
|
205
|
+
return;
|
206
|
+
}
|
207
|
+
const refTreeWalker = new FindReferencesTreeWalker(this._program, filePath, referencesResult, includeDeclaration, this._token);
|
208
|
+
referencesResult.addLocations(...refTreeWalker.findReferences());
|
209
|
+
}
|
210
|
+
static getDeclarationForNode(program, filePath, node, reporter, useCase, token, implicitlyImportedBy) {
|
125
211
|
(0, cancellationUtils_1.throwIfCancellationRequested)(token);
|
126
|
-
const declarations = documentSymbolCollector_1.DocumentSymbolCollector.getDeclarationsForNode(
|
127
|
-
/* resolveLocalNames */ false, useCase, token,
|
212
|
+
const declarations = documentSymbolCollector_1.DocumentSymbolCollector.getDeclarationsForNode(program, node,
|
213
|
+
/* resolveLocalNames */ false, useCase, token, implicitlyImportedBy);
|
128
214
|
if (declarations.length === 0) {
|
129
215
|
return undefined;
|
130
216
|
}
|
131
|
-
const requiresGlobalSearch = isVisibleOutside(evaluator, filePath, node, declarations);
|
217
|
+
const requiresGlobalSearch = isVisibleOutside(program.evaluator, filePath, node, declarations);
|
132
218
|
const symbolNames = new Set(declarations.map((d) => (0, declarationUtils_1.getNameFromDeclaration)(d)).filter((n) => !!n));
|
133
219
|
symbolNames.add(node.value);
|
134
220
|
return new ReferencesResult(requiresGlobalSearch, node, [...symbolNames.values()], declarations, useCase, reporter);
|
135
221
|
}
|
136
|
-
static getDeclarationForPosition(
|
222
|
+
static getDeclarationForPosition(program, filePath, position, reporter, useCase, token, implicitlyImportedBy) {
|
137
223
|
(0, cancellationUtils_1.throwIfCancellationRequested)(token);
|
224
|
+
const parseResults = program.getParseResults(filePath);
|
225
|
+
if (!parseResults) {
|
226
|
+
return undefined;
|
227
|
+
}
|
138
228
|
const offset = (0, positionUtils_1.convertPositionToOffset)(position, parseResults.tokenizerOutput.lines);
|
139
229
|
if (offset === undefined) {
|
140
230
|
return undefined;
|
@@ -147,11 +237,7 @@ class ReferencesProvider {
|
|
147
237
|
if (node.nodeType !== 38 /* Name */) {
|
148
238
|
return undefined;
|
149
239
|
}
|
150
|
-
return this.getDeclarationForNode(
|
151
|
-
}
|
152
|
-
static addReferences(parseResults, filePath, referencesResult, includeDeclaration, evaluator, token) {
|
153
|
-
const refTreeWalker = new FindReferencesTreeWalker(parseResults, filePath, referencesResult, includeDeclaration, evaluator, token);
|
154
|
-
referencesResult.addLocations(...refTreeWalker.findReferences());
|
240
|
+
return this.getDeclarationForNode(program, filePath, node, reporter, useCase, token, implicitlyImportedBy);
|
155
241
|
}
|
156
242
|
}
|
157
243
|
exports.ReferencesProvider = ReferencesProvider;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"referencesProvider.js","sourceRoot":"","sources":["../../../src/languageService/referencesProvider.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"referencesProvider.js","sourceRoot":"","sources":["../../../src/languageService/referencesProvider.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { CancellationToken, WorkspaceEdit } from 'vscode-languageserver';
|
2
|
+
import { ProgramView } from '../common/extensibility';
|
3
|
+
import { Position, Range } from '../common/textRange';
|
4
|
+
import { ReferencesResult } from '../languageService/referencesProvider';
|
5
|
+
export declare class RenameProvider {
|
6
|
+
private _program;
|
7
|
+
private _filePath;
|
8
|
+
private _position;
|
9
|
+
private _token;
|
10
|
+
private readonly _parseResults;
|
11
|
+
constructor(_program: ProgramView, _filePath: string, _position: Position, _token: CancellationToken);
|
12
|
+
canRenameSymbol(isDefaultWorkspace: boolean): Range | null;
|
13
|
+
renameSymbol(newName: string, isDefaultWorkspace: boolean): WorkspaceEdit | null;
|
14
|
+
static getRenameSymbolMode(program: ProgramView, filePath: string, referencesResult: ReferencesResult, isDefaultWorkspace: boolean): "none" | "singleFileMode" | "multiFileMode";
|
15
|
+
private _getReferenceResult;
|
16
|
+
private _getDeclaration;
|
17
|
+
}
|
@@ -0,0 +1,143 @@
|
|
1
|
+
"use strict";
|
2
|
+
/*
|
3
|
+
* renameProvider.ts
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
5
|
+
* Licensed under the MIT license.
|
6
|
+
* Author: Eric Traut
|
7
|
+
*
|
8
|
+
* Logic that rename identifier on the given position and its references.
|
9
|
+
*/
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
11
|
+
exports.RenameProvider = void 0;
|
12
|
+
const debug_1 = require("../common/debug");
|
13
|
+
const positionUtils_1 = require("../common/positionUtils");
|
14
|
+
const documentSymbolCollector_1 = require("../languageService/documentSymbolCollector");
|
15
|
+
const referencesProvider_1 = require("../languageService/referencesProvider");
|
16
|
+
const sourceFileInfoUtils_1 = require("../analyzer/sourceFileInfoUtils");
|
17
|
+
const cancellationUtils_1 = require("../common/cancellationUtils");
|
18
|
+
const workspaceEditUtils_1 = require("../common/workspaceEditUtils");
|
19
|
+
class RenameProvider {
|
20
|
+
constructor(_program, _filePath, _position, _token) {
|
21
|
+
this._program = _program;
|
22
|
+
this._filePath = _filePath;
|
23
|
+
this._position = _position;
|
24
|
+
this._token = _token;
|
25
|
+
this._parseResults = this._program.getParseResults(this._filePath);
|
26
|
+
}
|
27
|
+
canRenameSymbol(isDefaultWorkspace) {
|
28
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
29
|
+
if (!this._parseResults) {
|
30
|
+
return null;
|
31
|
+
}
|
32
|
+
const referencesResult = this._getReferenceResult();
|
33
|
+
if (!referencesResult) {
|
34
|
+
return null;
|
35
|
+
}
|
36
|
+
const renameMode = RenameProvider.getRenameSymbolMode(this._program, this._filePath, referencesResult, isDefaultWorkspace);
|
37
|
+
if (renameMode === 'none') {
|
38
|
+
return null;
|
39
|
+
}
|
40
|
+
// Return the range of the symbol.
|
41
|
+
return (0, positionUtils_1.convertTextRangeToRange)(referencesResult.nodeAtOffset, this._parseResults.tokenizerOutput.lines);
|
42
|
+
}
|
43
|
+
renameSymbol(newName, isDefaultWorkspace) {
|
44
|
+
var _a;
|
45
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
46
|
+
if (!this._parseResults) {
|
47
|
+
return null;
|
48
|
+
}
|
49
|
+
const referencesResult = this._getReferenceResult();
|
50
|
+
if (!referencesResult) {
|
51
|
+
return null;
|
52
|
+
}
|
53
|
+
const referenceProvider = new referencesProvider_1.ReferencesProvider(this._program, this._token);
|
54
|
+
const renameMode = RenameProvider.getRenameSymbolMode(this._program, this._filePath, referencesResult, isDefaultWorkspace);
|
55
|
+
switch (renameMode) {
|
56
|
+
case 'singleFileMode':
|
57
|
+
referenceProvider.addReferencesToResult(this._filePath,
|
58
|
+
/* includeDeclaration */ true, referencesResult);
|
59
|
+
break;
|
60
|
+
case 'multiFileMode': {
|
61
|
+
for (const curSourceFileInfo of this._program.getSourceFileInfoList()) {
|
62
|
+
// Make sure we only add user code to the references to prevent us
|
63
|
+
// from accidentally changing third party library or type stub.
|
64
|
+
if ((0, sourceFileInfoUtils_1.isUserCode)(curSourceFileInfo)) {
|
65
|
+
// Make sure searching symbol name exists in the file.
|
66
|
+
const content = (_a = curSourceFileInfo.sourceFile.getFileContent()) !== null && _a !== void 0 ? _a : '';
|
67
|
+
if (!referencesResult.symbolNames.some((s) => content.search(s) >= 0)) {
|
68
|
+
continue;
|
69
|
+
}
|
70
|
+
referenceProvider.addReferencesToResult(curSourceFileInfo.sourceFile.getFilePath(),
|
71
|
+
/* includeDeclaration */ true, referencesResult);
|
72
|
+
}
|
73
|
+
// This operation can consume significant memory, so check
|
74
|
+
// for situations where we need to discard the type cache.
|
75
|
+
this._program.handleMemoryHighUsage();
|
76
|
+
}
|
77
|
+
break;
|
78
|
+
}
|
79
|
+
case 'none':
|
80
|
+
// Rename is not allowed.
|
81
|
+
// ex) rename symbols from libraries.
|
82
|
+
return null;
|
83
|
+
default:
|
84
|
+
(0, debug_1.assertNever)(renameMode);
|
85
|
+
}
|
86
|
+
const edits = [];
|
87
|
+
referencesResult.locations.forEach((loc) => {
|
88
|
+
edits.push({
|
89
|
+
filePath: loc.path,
|
90
|
+
range: loc.range,
|
91
|
+
replacementText: newName,
|
92
|
+
});
|
93
|
+
});
|
94
|
+
return (0, workspaceEditUtils_1.convertToWorkspaceEdit)(this._program.fileSystem, { edits, fileOperations: [] });
|
95
|
+
}
|
96
|
+
static getRenameSymbolMode(program, filePath, referencesResult, isDefaultWorkspace) {
|
97
|
+
const sourceFileInfo = program.getSourceFileInfo(filePath);
|
98
|
+
// We have 2 different cases
|
99
|
+
// Single file mode.
|
100
|
+
// 1. rename on default workspace (ex, standalone file mode).
|
101
|
+
// 2. rename local symbols.
|
102
|
+
// 3. rename symbols defined in the non user open file.
|
103
|
+
//
|
104
|
+
// and Multi file mode.
|
105
|
+
// 1. rename public symbols defined in user files on regular workspace (ex, open folder mode).
|
106
|
+
const userFile = (0, sourceFileInfoUtils_1.isUserCode)(sourceFileInfo);
|
107
|
+
if (isDefaultWorkspace ||
|
108
|
+
(userFile && !referencesResult.requiresGlobalSearch) ||
|
109
|
+
(!userFile &&
|
110
|
+
sourceFileInfo.isOpenByClient &&
|
111
|
+
referencesResult.declarations.every((d) => program.getSourceFileInfo(d.path) === sourceFileInfo))) {
|
112
|
+
return 'singleFileMode';
|
113
|
+
}
|
114
|
+
if (referencesResult.declarations.every((d) => (0, sourceFileInfoUtils_1.isUserCode)(program.getSourceFileInfo(d.path)))) {
|
115
|
+
return 'multiFileMode';
|
116
|
+
}
|
117
|
+
// Rename is not allowed.
|
118
|
+
// ex) rename symbols from libraries.
|
119
|
+
return 'none';
|
120
|
+
}
|
121
|
+
_getReferenceResult() {
|
122
|
+
const referencesResult = this._getDeclaration();
|
123
|
+
if (!referencesResult) {
|
124
|
+
return undefined;
|
125
|
+
}
|
126
|
+
if (referencesResult.containsOnlyImportDecls) {
|
127
|
+
return undefined;
|
128
|
+
}
|
129
|
+
if (referencesResult.nonImportDeclarations.length === 0) {
|
130
|
+
// There is no symbol we can rename.
|
131
|
+
return undefined;
|
132
|
+
}
|
133
|
+
// Use declarations that doesn't contain import decls.
|
134
|
+
return new referencesProvider_1.ReferencesResult(referencesResult.requiresGlobalSearch, referencesResult.nodeAtOffset, referencesResult.symbolNames, referencesResult.nonImportDeclarations, referencesResult.useCase);
|
135
|
+
}
|
136
|
+
_getDeclaration() {
|
137
|
+
const sourceFileInfo = this._program.getSourceFileInfo(this._filePath);
|
138
|
+
return referencesProvider_1.ReferencesProvider.getDeclarationForPosition(this._program, this._filePath, this._position,
|
139
|
+
/* reporter */ undefined, documentSymbolCollector_1.DocumentSymbolCollectorUseCase.Rename, this._token, Array.from((0, sourceFileInfoUtils_1.collectImportedByFiles)(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile));
|
140
|
+
}
|
141
|
+
}
|
142
|
+
exports.RenameProvider = RenameProvider;
|
143
|
+
//# sourceMappingURL=renameProvider.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"renameProvider.js","sourceRoot":"","sources":["../../../src/languageService/renameProvider.ts"],"names":[],"mappings":"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"}
|
@@ -1,26 +1,22 @@
|
|
1
|
-
import { CancellationToken,
|
2
|
-
import {
|
3
|
-
import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes';
|
1
|
+
import { CancellationToken, MarkupKind, SignatureHelp, SignatureHelpContext } from 'vscode-languageserver';
|
2
|
+
import { ProgramView } from '../common/extensibility';
|
4
3
|
import { Position } from '../common/textRange';
|
5
|
-
import { ParseResults } from '../parser/parser';
|
6
|
-
export interface ParamInfo {
|
7
|
-
startOffset: number;
|
8
|
-
endOffset: number;
|
9
|
-
text: string;
|
10
|
-
documentation?: string | undefined;
|
11
|
-
}
|
12
|
-
export interface SignatureInfo {
|
13
|
-
label: string;
|
14
|
-
documentation?: MarkupContent | undefined;
|
15
|
-
parameters?: ParamInfo[] | undefined;
|
16
|
-
activeParameter?: number | undefined;
|
17
|
-
}
|
18
|
-
export interface SignatureHelpResults {
|
19
|
-
signatures: SignatureInfo[];
|
20
|
-
callHasParameters: boolean;
|
21
|
-
}
|
22
4
|
export declare class SignatureHelpProvider {
|
23
|
-
|
24
|
-
private
|
25
|
-
private
|
5
|
+
private _program;
|
6
|
+
private _filePath;
|
7
|
+
private _position;
|
8
|
+
private _format;
|
9
|
+
private _hasSignatureLabelOffsetCapability;
|
10
|
+
private _hasActiveParameterCapability;
|
11
|
+
private _context;
|
12
|
+
private _token;
|
13
|
+
private readonly _parseResults;
|
14
|
+
private readonly _sourceMapper;
|
15
|
+
constructor(_program: ProgramView, _filePath: string, _position: Position, _format: MarkupKind, _hasSignatureLabelOffsetCapability: boolean, _hasActiveParameterCapability: boolean, _context: SignatureHelpContext | undefined, _token: CancellationToken);
|
16
|
+
getSignatureHelp(): SignatureHelp | undefined;
|
17
|
+
private get _evaluator();
|
18
|
+
private _getSignatureHelp;
|
19
|
+
private _convert;
|
20
|
+
private _makeSignature;
|
21
|
+
private _getDocStringFromCallNode;
|
26
22
|
}
|
@@ -41,14 +41,35 @@ const cancellationUtils_1 = require("../common/cancellationUtils");
|
|
41
41
|
const positionUtils_1 = require("../common/positionUtils");
|
42
42
|
const tooltipUtils_1 = require("./tooltipUtils");
|
43
43
|
class SignatureHelpProvider {
|
44
|
-
|
44
|
+
constructor(_program, _filePath, _position, _format, _hasSignatureLabelOffsetCapability, _hasActiveParameterCapability, _context, _token) {
|
45
|
+
this._program = _program;
|
46
|
+
this._filePath = _filePath;
|
47
|
+
this._position = _position;
|
48
|
+
this._format = _format;
|
49
|
+
this._hasSignatureLabelOffsetCapability = _hasSignatureLabelOffsetCapability;
|
50
|
+
this._hasActiveParameterCapability = _hasActiveParameterCapability;
|
51
|
+
this._context = _context;
|
52
|
+
this._token = _token;
|
53
|
+
this._parseResults = this._program.getParseResults(this._filePath);
|
54
|
+
this._sourceMapper = this._program.getSourceMapper(this._filePath, this._token, /* mapCompiled */ true);
|
55
|
+
}
|
56
|
+
getSignatureHelp() {
|
57
|
+
return this._convert(this._getSignatureHelp());
|
58
|
+
}
|
59
|
+
get _evaluator() {
|
60
|
+
return this._program.evaluator;
|
61
|
+
}
|
62
|
+
_getSignatureHelp() {
|
45
63
|
var _a;
|
46
|
-
(0, cancellationUtils_1.throwIfCancellationRequested)(
|
47
|
-
|
64
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
65
|
+
if (!this._parseResults) {
|
66
|
+
return undefined;
|
67
|
+
}
|
68
|
+
const offset = (0, positionUtils_1.convertPositionToOffset)(this._position, this._parseResults.tokenizerOutput.lines);
|
48
69
|
if (offset === undefined) {
|
49
70
|
return undefined;
|
50
71
|
}
|
51
|
-
let node = ParseTreeUtils.findNodeByOffset(
|
72
|
+
let node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset);
|
52
73
|
// See if we can get to a "better" node by backing up a few columns.
|
53
74
|
// A "better" node is defined as one that's deeper than the current
|
54
75
|
// node.
|
@@ -60,11 +81,11 @@ class SignatureHelpProvider {
|
|
60
81
|
// arguments, and we don't want to mistakenly think that we're
|
61
82
|
// pointing to a previous argument. Don't scan across open parenthesis so that
|
62
83
|
// we don't go into the wrong function call
|
63
|
-
const ch =
|
84
|
+
const ch = this._parseResults.text.substr(curOffset, 1);
|
64
85
|
if (ch === ',' || ch === '(') {
|
65
86
|
break;
|
66
87
|
}
|
67
|
-
const curNode = ParseTreeUtils.findNodeByOffset(
|
88
|
+
const curNode = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, curOffset);
|
68
89
|
if (curNode && curNode !== initialNode) {
|
69
90
|
if (ParseTreeUtils.getNodeDepth(curNode) > initialDepth) {
|
70
91
|
node = curNode;
|
@@ -76,27 +97,99 @@ class SignatureHelpProvider {
|
|
76
97
|
if (node === undefined) {
|
77
98
|
return undefined;
|
78
99
|
}
|
79
|
-
const callInfo = (0, parseTreeUtils_1.getCallNodeAndActiveParameterIndex)(node, offset,
|
100
|
+
const callInfo = (0, parseTreeUtils_1.getCallNodeAndActiveParameterIndex)(node, offset, this._parseResults.tokenizerOutput.tokens);
|
80
101
|
if (!callInfo) {
|
81
102
|
return;
|
82
103
|
}
|
83
|
-
const callSignatureInfo =
|
104
|
+
const callSignatureInfo = this._evaluator.getCallSignatureInfo(callInfo.callNode, callInfo.activeIndex, callInfo.activeOrFake);
|
84
105
|
if (!callSignatureInfo) {
|
85
106
|
return undefined;
|
86
107
|
}
|
87
|
-
const signatures = callSignatureInfo.signatures.map((sig) => this._makeSignature(callSignatureInfo.callNode, sig
|
108
|
+
const signatures = callSignatureInfo.signatures.map((sig) => this._makeSignature(callSignatureInfo.callNode, sig));
|
88
109
|
const callHasParameters = !!((_a = callSignatureInfo.callNode.arguments) === null || _a === void 0 ? void 0 : _a.length);
|
89
110
|
return {
|
90
111
|
signatures,
|
91
112
|
callHasParameters,
|
92
113
|
};
|
93
114
|
}
|
94
|
-
|
115
|
+
_convert(signatureHelpResults) {
|
116
|
+
var _a, _b;
|
117
|
+
if (!signatureHelpResults) {
|
118
|
+
return undefined;
|
119
|
+
}
|
120
|
+
const signatures = signatureHelpResults.signatures.map((sig) => {
|
121
|
+
let paramInfo = [];
|
122
|
+
if (sig.parameters) {
|
123
|
+
paramInfo = sig.parameters.map((param) => vscode_languageserver_1.ParameterInformation.create(this._hasSignatureLabelOffsetCapability ? [param.startOffset, param.endOffset] : param.text, param.documentation));
|
124
|
+
}
|
125
|
+
const sigInfo = vscode_languageserver_1.SignatureInformation.create(sig.label, /* documentation */ undefined, ...paramInfo);
|
126
|
+
if (sig.documentation !== undefined) {
|
127
|
+
sigInfo.documentation = sig.documentation;
|
128
|
+
}
|
129
|
+
if (sig.activeParameter !== undefined) {
|
130
|
+
sigInfo.activeParameter = sig.activeParameter;
|
131
|
+
}
|
132
|
+
return sigInfo;
|
133
|
+
});
|
134
|
+
// A signature is active if it contains an active parameter,
|
135
|
+
// or if both the signature and its invocation have no parameters.
|
136
|
+
const isActive = (sig) => { var _a; return sig.activeParameter !== undefined || (!signatureHelpResults.callHasParameters && !((_a = sig.parameters) === null || _a === void 0 ? void 0 : _a.length)); };
|
137
|
+
let activeSignature = signatures.findIndex(isActive);
|
138
|
+
if (activeSignature === -1) {
|
139
|
+
activeSignature = undefined;
|
140
|
+
}
|
141
|
+
let activeParameter = activeSignature !== undefined ? signatures[activeSignature].activeParameter : undefined;
|
142
|
+
// Check if we should reuse the user's signature selection. If the retrigger was not "invoked"
|
143
|
+
// (i.e., the signature help call was automatically generated by the client due to some navigation
|
144
|
+
// or text change), check to see if the previous signature is still "active". If so, we mark it as
|
145
|
+
// active in our response.
|
146
|
+
//
|
147
|
+
// This isn't a perfect method. For nested calls, we can't tell when we are moving between them.
|
148
|
+
// Ideally, we would include a token in the signature help responses to compare later, allowing us
|
149
|
+
// to know when the user's navigated to a nested call (and therefore the old signature's info does
|
150
|
+
// not apply), but for now manually retriggering the signature help will work around the issue.
|
151
|
+
if (((_a = this._context) === null || _a === void 0 ? void 0 : _a.isRetrigger) && this._context.triggerKind !== vscode_languageserver_1.SignatureHelpTriggerKind.Invoked) {
|
152
|
+
const prevActiveSignature = (_b = this._context.activeSignatureHelp) === null || _b === void 0 ? void 0 : _b.activeSignature;
|
153
|
+
if (prevActiveSignature !== undefined && prevActiveSignature < signatures.length) {
|
154
|
+
const sig = signatures[prevActiveSignature];
|
155
|
+
if (isActive(sig)) {
|
156
|
+
activeSignature = prevActiveSignature;
|
157
|
+
activeParameter = sig.activeParameter;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
}
|
161
|
+
if (this._hasActiveParameterCapability || activeSignature === undefined) {
|
162
|
+
// If there is no active parameter, then we want the client to not highlight anything.
|
163
|
+
// Unfortunately, the LSP spec says that "undefined" or "out of bounds" values should be
|
164
|
+
// treated as 0, which is the first parameter. That's not what we want, but thankfully
|
165
|
+
// VS Code (and potentially other clients) choose to handle out of bounds values by
|
166
|
+
// not highlighting them, which is what we want.
|
167
|
+
//
|
168
|
+
// The spec defines activeParameter as uinteger, so use the maximum length of any
|
169
|
+
// signature's parameter list to ensure that the value is always out of range.
|
170
|
+
//
|
171
|
+
// We always set this even if some signature has an active parameter, as this
|
172
|
+
// value is used as the fallback for signatures that don't explicitly specify an
|
173
|
+
// active parameter (and we use "undefined" to mean "no active parameter").
|
174
|
+
//
|
175
|
+
// We could apply this hack to each individual signature such that they all specify
|
176
|
+
// activeParameter, but that would make it more difficult to determine which actually
|
177
|
+
// are active when comparing, and we already have to set this for clients which don't
|
178
|
+
// support per-signature activeParameter.
|
179
|
+
//
|
180
|
+
// See:
|
181
|
+
// - https://github.com/microsoft/language-server-protocol/issues/1271
|
182
|
+
// - https://github.com/microsoft/pyright/pull/1783
|
183
|
+
activeParameter = Math.max(...signatures.map((s) => { var _a, _b; return (_b = (_a = s.parameters) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; }));
|
184
|
+
}
|
185
|
+
return { signatures, activeSignature, activeParameter };
|
186
|
+
}
|
187
|
+
_makeSignature(callNode, signature) {
|
95
188
|
var _a;
|
96
189
|
const functionType = signature.type;
|
97
|
-
const stringParts =
|
190
|
+
const stringParts = this._evaluator.printFunctionParts(functionType, 1024 /* ExpandTypedDictArgs */);
|
98
191
|
const parameters = [];
|
99
|
-
const functionDocString = (_a = (0, tooltipUtils_1.getFunctionDocStringFromType)(functionType,
|
192
|
+
const functionDocString = (_a = (0, tooltipUtils_1.getFunctionDocStringFromType)(functionType, this._sourceMapper, this._evaluator)) !== null && _a !== void 0 ? _a : this._getDocStringFromCallNode(callNode);
|
100
193
|
let label = '(';
|
101
194
|
let activeParameter;
|
102
195
|
const params = functionType.details.parameters;
|
@@ -149,7 +242,7 @@ class SignatureHelpProvider {
|
|
149
242
|
activeParameter,
|
150
243
|
};
|
151
244
|
if (functionDocString) {
|
152
|
-
if (
|
245
|
+
if (this._format === vscode_languageserver_1.MarkupKind.Markdown) {
|
153
246
|
sigInfo.documentation = {
|
154
247
|
kind: vscode_languageserver_1.MarkupKind.Markdown,
|
155
248
|
value: (0, docStringConversion_1.convertDocStringToMarkdown)(functionDocString),
|
@@ -164,7 +257,7 @@ class SignatureHelpProvider {
|
|
164
257
|
}
|
165
258
|
return sigInfo;
|
166
259
|
}
|
167
|
-
|
260
|
+
_getDocStringFromCallNode(callNode) {
|
168
261
|
var _a;
|
169
262
|
// This is a heuristic to see whether we can get some docstring
|
170
263
|
// from call node when all other methods failed.
|
@@ -180,16 +273,16 @@ class SignatureHelpProvider {
|
|
180
273
|
if (!name) {
|
181
274
|
return undefined;
|
182
275
|
}
|
183
|
-
for (const decl of (_a =
|
184
|
-
const resolveDecl =
|
276
|
+
for (const decl of (_a = this._evaluator.getDeclarationsForNameNode(name)) !== null && _a !== void 0 ? _a : []) {
|
277
|
+
const resolveDecl = this._evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true);
|
185
278
|
if (!resolveDecl) {
|
186
279
|
continue;
|
187
280
|
}
|
188
|
-
const type =
|
281
|
+
const type = this._evaluator.getType(name);
|
189
282
|
if (!type) {
|
190
283
|
continue;
|
191
284
|
}
|
192
|
-
const part = (0, tooltipUtils_1.getDocumentationPartsForTypeAndDecl)(
|
285
|
+
const part = (0, tooltipUtils_1.getDocumentationPartsForTypeAndDecl)(this._sourceMapper, type, resolveDecl, this._evaluator);
|
193
286
|
if (part) {
|
194
287
|
return part;
|
195
288
|
}
|