@zzzen/pyright-internal 1.2.0-dev.20260621 → 1.2.0-dev.20260705
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/binder.js +51 -5
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.js +12 -2
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +6 -0
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/dataClasses.js +7 -0
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/docStringUtils.d.ts +1 -0
- package/dist/analyzer/docStringUtils.js +78 -0
- package/dist/analyzer/docStringUtils.js.map +1 -1
- package/dist/analyzer/importResolver.js +69 -4
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.js +19 -1
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.js +8 -0
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +44 -0
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.js +6 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.js +2 -2
- package/dist/analyzer/pythonPathUtils.js.map +1 -1
- package/dist/analyzer/staticExpressions.js +91 -19
- package/dist/analyzer/staticExpressions.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +53 -61
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +52 -4
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.js +10 -4
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/common/docStringService.d.ts +2 -0
- package/dist/common/docStringService.js +5 -1
- package/dist/common/docStringService.js.map +1 -1
- package/dist/common/fullAccessHost.d.ts +2 -1
- package/dist/common/fullAccessHost.js +43 -9
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/host.d.ts +2 -2
- package/dist/common/host.js +1 -1
- package/dist/common/host.js.map +1 -1
- package/dist/common/uri/fileUri.d.ts +1 -0
- package/dist/common/uri/fileUri.js +20 -0
- package/dist/common/uri/fileUri.js.map +1 -1
- package/dist/common/uri/memoization.js +5 -1
- package/dist/common/uri/memoization.js.map +1 -1
- package/dist/common/uri/uriUtils.d.ts +2 -0
- package/dist/common/uri/uriUtils.js +22 -0
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/languageServerBase.js +6 -1
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +6 -0
- package/dist/languageService/completionProvider.js +194 -46
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/completionProviderUtils.d.ts +2 -0
- package/dist/languageService/completionProviderUtils.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +15 -1
- package/dist/languageService/documentSymbolCollector.js +64 -41
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/hoverProvider.js +22 -0
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importStatementCandidates.d.ts +16 -0
- package/dist/languageService/importStatementCandidates.js +100 -0
- package/dist/languageService/importStatementCandidates.js.map +1 -0
- package/dist/languageService/referencesProvider.d.ts +16 -9
- package/dist/languageService/referencesProvider.js +188 -32
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.d.ts +7 -2
- package/dist/languageService/renameProvider.js +45 -17
- package/dist/languageService/renameProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +9 -0
- package/dist/localization/localize.js +5 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +4 -0
- package/dist/parser/parser.js +9 -0
- package/dist/parser/parser.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.js +13 -6
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/tests/checker.test.js +4 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/completions.test.js +118 -9
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/docStringReturnExtraction.test.d.ts +1 -0
- package/dist/tests/docStringReturnExtraction.test.js +125 -0
- package/dist/tests/docStringReturnExtraction.test.js.map +1 -0
- package/dist/tests/fourslash/completions.call.unpackedGenericTypedDict.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.call.unpackedGenericTypedDict.fourslash.js +35 -0
- package/dist/tests/fourslash/completions.call.unpackedGenericTypedDict.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.keywords.expressionContext.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.keywords.expressionContext.fourslash.js +86 -0
- package/dist/tests/fourslash/completions.keywords.expressionContext.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.qualname.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.qualname.fourslash.js +34 -0
- package/dist/tests/fourslash/completions.qualname.fourslash.js.map +1 -0
- package/dist/tests/fourslash/diagnostics.missingModuleSource.compiledModule.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/diagnostics.missingModuleSource.compiledModule.fourslash.js +122 -0
- package/dist/tests/fourslash/diagnostics.missingModuleSource.compiledModule.fourslash.js.map +1 -0
- package/dist/tests/fourslash/import.multipartModuleClassShadow.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/import.multipartModuleClassShadow.fourslash.js +39 -0
- package/dist/tests/fourslash/import.multipartModuleClassShadow.fourslash.js.map +1 -0
- package/dist/tests/harness/testAccessHost.d.ts +1 -1
- package/dist/tests/harness/testAccessHost.js +1 -1
- package/dist/tests/harness/testAccessHost.js.map +1 -1
- package/dist/tests/importResolver.test.js +33 -0
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +92 -0
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/lsp/languageServerTestUtils.d.ts +1 -1
- package/dist/tests/lsp/languageServerTestUtils.js +1 -1
- package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
- package/dist/tests/parser.test.js +18 -0
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/pyrightFileSystem.test.js +25 -0
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.js +73 -0
- package/dist/tests/signatureHelp.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +4 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +6 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +1 -1
- package/dist/tests/typeEvaluator4.test.js +23 -1
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +20 -0
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +23 -21
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +4 -4
|
@@ -60,7 +60,12 @@ const textRange_1 = require("../common/textRange");
|
|
|
60
60
|
const documentSymbolCollector_1 = require("./documentSymbolCollector");
|
|
61
61
|
const navigationUtils_1 = require("./navigationUtils");
|
|
62
62
|
class ReferencesResult {
|
|
63
|
-
constructor(requiresGlobalSearch, nodeAtOffset, symbolNames,
|
|
63
|
+
constructor(requiresGlobalSearch, nodeAtOffset, symbolNames,
|
|
64
|
+
// Invariant: this array only ever grows, and only via `mergeSeedDeclarations`. Its `length` is
|
|
65
|
+
// reused as a free monotonic "seed version" for the per-file watermark skip in
|
|
66
|
+
// `collectWorkspaceReferences`, so anything that appends here for a non-seed reason would
|
|
67
|
+
// silently bump that version and drop needed re-walks. Do not push to it from elsewhere.
|
|
68
|
+
declarations, useCase, providers, _reporter) {
|
|
64
69
|
this.requiresGlobalSearch = requiresGlobalSearch;
|
|
65
70
|
this.nodeAtOffset = nodeAtOffset;
|
|
66
71
|
this.symbolNames = symbolNames;
|
|
@@ -113,42 +118,39 @@ class ReferencesResult {
|
|
|
113
118
|
}
|
|
114
119
|
exports.ReferencesResult = ReferencesResult;
|
|
115
120
|
class FindReferencesTreeWalker {
|
|
116
|
-
constructor(_program, _fileUri, _referencesResult, _includeDeclaration, _cancellationToken, _createDocumentRange = FindReferencesTreeWalker.createDocumentRange) {
|
|
121
|
+
constructor(_program, _fileUri, _referencesResult, _includeDeclaration, _cancellationToken, _createDocumentRange = FindReferencesTreeWalker.createDocumentRange, _previousResultRanges) {
|
|
117
122
|
this._program = _program;
|
|
118
123
|
this._fileUri = _fileUri;
|
|
119
124
|
this._referencesResult = _referencesResult;
|
|
120
125
|
this._includeDeclaration = _includeDeclaration;
|
|
121
126
|
this._cancellationToken = _cancellationToken;
|
|
122
127
|
this._createDocumentRange = _createDocumentRange;
|
|
128
|
+
this._previousResultRanges = _previousResultRanges;
|
|
123
129
|
this._parseResults = this._program.getParseResults(this._fileUri);
|
|
124
130
|
}
|
|
125
131
|
findReferences(rootNode = this._parseResults?.parserOutput.parseTree) {
|
|
126
132
|
const results = [];
|
|
127
133
|
if (!this._parseResults) {
|
|
128
|
-
return results;
|
|
134
|
+
return { results, discoveredDeclarations: [] };
|
|
129
135
|
}
|
|
130
136
|
const collector = new documentSymbolCollector_1.DocumentSymbolCollector(this._program, this._referencesResult.symbolNames, this._referencesResult.declarations, rootNode, this._cancellationToken, {
|
|
131
137
|
treatModuleInImportAndFromImportSame: true,
|
|
132
138
|
skipUnreachableCode: false,
|
|
133
139
|
useCase: this._referencesResult.useCase,
|
|
134
140
|
providers: this._referencesResult.providers,
|
|
141
|
+
previousResultRanges: this._previousResultRanges,
|
|
135
142
|
});
|
|
136
143
|
for (const result of collector.collect()) {
|
|
137
|
-
//
|
|
144
|
+
// `result.node` is inspected only here, while this file's parse tree is still live; we do
|
|
145
|
+
// not store it on the committed result so the tree can be dropped after this file is walked.
|
|
138
146
|
if (this._includeDeclaration || result.node !== this._referencesResult.nodeAtOffset) {
|
|
139
147
|
results.push({
|
|
140
|
-
node: result.node,
|
|
141
148
|
location: this._createDocumentRange(this._fileUri, result, this._parseResults),
|
|
142
|
-
|
|
143
|
-
? {
|
|
144
|
-
start: (0, positionUtils_1.convertOffsetToPosition)(result.node.parent.start, this._parseResults.tokenizerOutput.lines),
|
|
145
|
-
end: (0, positionUtils_1.convertOffsetToPosition)(textRange_1.TextRange.getEnd(result.node.parent), this._parseResults.tokenizerOutput.lines),
|
|
146
|
-
}
|
|
147
|
-
: undefined,
|
|
149
|
+
range: result.range,
|
|
148
150
|
});
|
|
149
151
|
}
|
|
150
152
|
}
|
|
151
|
-
return results;
|
|
153
|
+
return { results, discoveredDeclarations: collector.getSeedDeclarations() };
|
|
152
154
|
}
|
|
153
155
|
static createDocumentRange(fileUri, result, parseResults) {
|
|
154
156
|
return {
|
|
@@ -183,6 +185,9 @@ class ReferencesProvider {
|
|
|
183
185
|
? (range) => resultReporter.report((0, navigationUtils_1.convertDocumentRangesToLocation)(this._program.fileSystem, range, this._convertToLocation))
|
|
184
186
|
: (range) => (0, collectionUtils_1.appendArray)(locations, (0, navigationUtils_1.convertDocumentRangesToLocation)(this._program.fileSystem, range, this._convertToLocation));
|
|
185
187
|
const invokedFromUserFile = (0, sourceFileInfoUtils_1.isUserCode)(sourceFileInfo);
|
|
188
|
+
// A file participates in find-all-references when it is open in the editor, or the request
|
|
189
|
+
// originated from non-user code, or it is user code.
|
|
190
|
+
const isReferenceCandidateFile = (info) => info.isOpenByClient || !invokedFromUserFile || (0, sourceFileInfoUtils_1.isUserCode)(info);
|
|
186
191
|
const referencesResult = ReferencesProvider.getDeclarationForPosition(this._program, fileUri, position, reporter, extensibility_1.ReferenceUseCase.References, this._token);
|
|
187
192
|
if (!referencesResult) {
|
|
188
193
|
return;
|
|
@@ -191,22 +196,11 @@ class ReferencesProvider {
|
|
|
191
196
|
if (!referencesResult.requiresGlobalSearch) {
|
|
192
197
|
this.addReferencesToResult(sourceFileInfo.uri, includeDeclaration, referencesResult);
|
|
193
198
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
// See if the reference symbol's string is located somewhere within the file.
|
|
200
|
-
// If not, we can skip additional processing for the file.
|
|
201
|
-
const fileContents = curSourceFileInfo.contents;
|
|
202
|
-
if (!fileContents || referencesResult.symbolNames.some((s) => fileContents.indexOf(s) >= 0)) {
|
|
203
|
-
this.addReferencesToResult(curSourceFileInfo.uri, includeDeclaration, referencesResult);
|
|
204
|
-
}
|
|
205
|
-
// This operation can consume significant memory, so check
|
|
206
|
-
// for situations where we need to discard the type cache.
|
|
207
|
-
this._program.handleMemoryHighUsage();
|
|
208
|
-
}
|
|
209
|
-
}
|
|
199
|
+
// Collect references across the workspace. Some symbols are found as a group (protocol
|
|
200
|
+
// members and TypedDict keys that share a name), and the rest of the group only becomes
|
|
201
|
+
// known once their usages in other files are examined. A single workspace walk pulls in
|
|
202
|
+
// those related declarations so the result covers the entire group.
|
|
203
|
+
this.collectWorkspaceReferences(referencesResult, includeDeclaration, isReferenceCandidateFile);
|
|
210
204
|
// Make sure to include declarations regardless where they are defined
|
|
211
205
|
// if includeDeclaration is set.
|
|
212
206
|
if (includeDeclaration) {
|
|
@@ -243,13 +237,157 @@ class ReferencesProvider {
|
|
|
243
237
|
}
|
|
244
238
|
return dedupedLocations;
|
|
245
239
|
}
|
|
246
|
-
|
|
240
|
+
// Collects references in a single file without committing them to `referencesResult`, returning
|
|
241
|
+
// the per-file results plus any seed declarations the usage providers discovered while walking.
|
|
242
|
+
collectFileReferences(fileUri, includeDeclaration, referencesResult, previousResultRanges) {
|
|
247
243
|
const parseResults = this._program.getParseResults(fileUri);
|
|
248
244
|
if (!parseResults) {
|
|
249
|
-
return;
|
|
245
|
+
return { results: [], discoveredDeclarations: [] };
|
|
246
|
+
}
|
|
247
|
+
const refTreeWalker = new FindReferencesTreeWalker(this._program, fileUri, referencesResult, includeDeclaration, this._token, this._createDocumentRange, previousResultRanges);
|
|
248
|
+
return refTreeWalker.findReferences();
|
|
249
|
+
}
|
|
250
|
+
addReferencesToResult(fileUri, includeDeclaration, referencesResult) {
|
|
251
|
+
const collected = this.collectFileReferences(fileUri, includeDeclaration, referencesResult);
|
|
252
|
+
referencesResult.addResults(...collected.results);
|
|
253
|
+
}
|
|
254
|
+
// Walks the workspace to collect references into `referencesResult`. For ordinary symbols the seed
|
|
255
|
+
// declaration set cannot grow, so this is a single pass and results stream out per file as they are
|
|
256
|
+
// found.
|
|
257
|
+
//
|
|
258
|
+
// Seed-usage providers (protocol members, TypedDict keys) can reveal additional declarations
|
|
259
|
+
// only after a usage in one file is matched, and that declaration may live in a file walked
|
|
260
|
+
// before the one that reveals it. When such a provider is active we repeat the workspace walk
|
|
261
|
+
// until the declaration set stops growing. Results are not discarded between passes: each pass
|
|
262
|
+
// streams only that file's newly found locations (its delta) into `referencesResult`, which
|
|
263
|
+
// accumulates across passes (it is never cleared), so the running result is always exactly
|
|
264
|
+
// previous + deltas. This is the same `DocumentSymbolCollector` run that collects references, so
|
|
265
|
+
// growth costs no extra walk beyond the re-passes growth requires.
|
|
266
|
+
//
|
|
267
|
+
// Cost model: when nothing propagates -- ordinary symbols, or a seed symbol whose first pass
|
|
268
|
+
// discovers no new declarations -- this is a single workspace walk, identical to the non-seed path.
|
|
269
|
+
// When the seed grows we re-walk, but each later pass skips every file already processed at the
|
|
270
|
+
// current seed version: we keep a per-file watermark of the seed version it was last walked at
|
|
271
|
+
// (`referencesResult.declarations.length`, a free monotonically increasing version) and re-examine a
|
|
272
|
+
// file only after the seed grows past that watermark. A file is therefore re-collected only when new
|
|
273
|
+
// declarations could give it new matches, and a converged file is visited at most once more to
|
|
274
|
+
// confirm no new matches at the final seed -- not once per pass. We deliberately never pay the worst
|
|
275
|
+
// case up front: there is no eager pre-pass that scans the whole workspace just to harvest every
|
|
276
|
+
// declaration before collecting results. Work grows lazily, only when we discover more to search.
|
|
277
|
+
//
|
|
278
|
+
// The loop runs to a genuine fixpoint with no pass cap: the declaration set grows monotonically
|
|
279
|
+
// and is bounded by the finite set of declarations in the workspace, so convergence is guaranteed.
|
|
280
|
+
// A cap would risk emitting a silently incomplete rename/reference set (broken edit) on a deep
|
|
281
|
+
// cross-file chain; the only acceptable early exit is cancellation, which aborts the whole request
|
|
282
|
+
// rather than returning a partial result.
|
|
283
|
+
//
|
|
284
|
+
// NOTE: keep observable behavior in lockstep with AsyncReferencesProvider.collectWorkspaceReferences.
|
|
285
|
+
collectWorkspaceReferences(referencesResult, includeDeclaration, isCandidateFile) {
|
|
286
|
+
// Whether the seed can grow is the usage providers' policy, not this engine's. A provider that
|
|
287
|
+
// exposes `appendSeedDeclarationsAt` may contribute sibling declarations during the walk, so the
|
|
288
|
+
// result set is not final until the workspace-wide fixpoint settles. (Today's protocol/TypedDict
|
|
289
|
+
// providers expose it only for rename and leave it unbound for Find All References, but the engine
|
|
290
|
+
// no longer depends on that -- it just checks the hook.)
|
|
291
|
+
const canGrowSeed = referencesResult.providers.some((p) => p.appendSeedDeclarationsAt !== undefined);
|
|
292
|
+
// Per-file delta handle. When the seed can grow we re-walk files as the seed expands, and the same
|
|
293
|
+
// location can be re-found on several passes. To avoid re-reporting it, each file keeps the set of
|
|
294
|
+
// result ranges already found in it (keyed via `getResultRangeKey`) and hands that
|
|
295
|
+
// set to the collector as its read-only "previous result" (modeled on the semantic-tokens /
|
|
296
|
+
// pull-diagnostics delta APIs). The collector returns only that file's delta -- the locations new
|
|
297
|
+
// since the previous result -- without ever mutating the set; this provider then merges the delta
|
|
298
|
+
// back into the set (below) so the next re-walk yields just the seed-growth additions. Each delta is
|
|
299
|
+
// streamed straight into `referencesResult`, so the running result is exactly previous + deltas with
|
|
300
|
+
// no separate dedup pass. (The non-growing path needs no handle: each file is walked once, so its
|
|
301
|
+
// first results are final and stream immediately.)
|
|
302
|
+
const previousResultRangesByFile = canGrowSeed ? new Map() : undefined;
|
|
303
|
+
// Per-file watermark of the seed version (`referencesResult.declarations.length`) each file was
|
|
304
|
+
// last walked at. Lets later passes skip files already processed at the current seed version,
|
|
305
|
+
// re-collecting a file only after the seed grows past its watermark.
|
|
306
|
+
const lastWalkedSeedVersion = canGrowSeed ? new Map() : undefined;
|
|
307
|
+
// Design decision -- correctness over performance: this fixpoint walk is intentionally NOT
|
|
308
|
+
// capped for performance, and it never truncates the result to "go faster". Returning a
|
|
309
|
+
// broken/partial answer in the name of perf is the worst possible outcome here: a partial rename
|
|
310
|
+
// silently corrupts code, and a partial reference set misleads the user. The only acceptable way
|
|
311
|
+
// to stop early is user cancellation (`throwIfCancellationRequested` below); short of that we
|
|
312
|
+
// always run to a complete, correct result. If a large workspace makes this slow, the answer is
|
|
313
|
+
// for the user to cancel -- not for us to return a wrong answer.
|
|
314
|
+
//
|
|
315
|
+
// Growth is monotonic over the finite set of workspace declarations, so the loop is guaranteed to
|
|
316
|
+
// converge as long as `mergeSeedDeclarations` only reports growth when the deduped
|
|
317
|
+
// (`areDeclarationsSame`) declaration set actually increases.
|
|
318
|
+
let grew = true;
|
|
319
|
+
while (grew) {
|
|
320
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
|
321
|
+
grew = false;
|
|
322
|
+
for (const curSourceFileInfo of this._program.getSourceFileInfoList()) {
|
|
323
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
|
324
|
+
// "Find all references" will only include references from user code unless the file
|
|
325
|
+
// is explicitly opened in the editor or it is invoked from non user files.
|
|
326
|
+
if (!isCandidateFile(curSourceFileInfo)) {
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
const fileKey = curSourceFileInfo.uri.key;
|
|
330
|
+
// `referencesResult.declarations.length` is a free, monotonically increasing seed version
|
|
331
|
+
// (it only grows via mergeSeedDeclarations). Capture it before the walk so it reflects the
|
|
332
|
+
// seed this file is matched against. Unused (0) when the seed can't grow.
|
|
333
|
+
const seedVersion = canGrowSeed ? referencesResult.declarations.length : 0;
|
|
334
|
+
// Seed-version skip: a file re-processed at the same seed version yields identical results,
|
|
335
|
+
// so skip any file already walked (or examined) at the current version. A file with no
|
|
336
|
+
// watermark is always considered, so later seed/name growth still reaches it.
|
|
337
|
+
if (canGrowSeed && lastWalkedSeedVersion.get(fileKey) === seedVersion) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
// Record the seed version BEFORE matching this file, so the watermark reflects exactly the
|
|
341
|
+
// seed snapshot the entire walk of this file is matched against. collectFileReferences
|
|
342
|
+
// matches the whole file against the seed as it stands now; the seed only grows afterward
|
|
343
|
+
// (via mergeSeedDeclarations below), which bumps the global version past this watermark and
|
|
344
|
+
// triggers exactly one more re-walk of this file against the final seed. Recording it here --
|
|
345
|
+
// rather than after the walk -- guarantees a file is never matched against a seed newer than
|
|
346
|
+
// its watermark, so no single file can be matched against two different seed versions.
|
|
347
|
+
lastWalkedSeedVersion?.set(fileKey, seedVersion);
|
|
348
|
+
// See if the reference symbol's string is located somewhere within the file.
|
|
349
|
+
// If not, we can skip additional processing for the file.
|
|
350
|
+
const fileContents = curSourceFileInfo.contents;
|
|
351
|
+
if (fileContents && !referencesResult.symbolNames.some((s) => fileContents.indexOf(s) >= 0)) {
|
|
352
|
+
// No possible match at this seed version; re-examine only after the seed (and thus the
|
|
353
|
+
// symbol-name set) grows past the watermark recorded above.
|
|
354
|
+
continue;
|
|
355
|
+
}
|
|
356
|
+
// Per-file delta handle: reuse the same set across passes so the collector treats it as the
|
|
357
|
+
// previous result and returns only this file's seed-growth additions. Absent when the seed
|
|
358
|
+
// cannot grow (single walk).
|
|
359
|
+
const previousResultRanges = previousResultRangesByFile
|
|
360
|
+
? (0, collectionUtils_1.getOrAdd)(previousResultRangesByFile, fileKey, () => new Set())
|
|
361
|
+
: undefined;
|
|
362
|
+
const collected = this.collectFileReferences(curSourceFileInfo.uri, includeDeclaration, referencesResult, previousResultRanges);
|
|
363
|
+
if (canGrowSeed && mergeSeedDeclarations(referencesResult, collected.discoveredDeclarations)) {
|
|
364
|
+
grew = true;
|
|
365
|
+
}
|
|
366
|
+
// The collector returns only this file's delta: locations not in the previous-result set it
|
|
367
|
+
// was given (the whole result on a file's first walk, just the seed-growth additions on a
|
|
368
|
+
// re-walk). Appending each delta as it arrives builds the full result incrementally -- full
|
|
369
|
+
// result = previous result + streamed deltas -- so results stream out even while the seed is
|
|
370
|
+
// still growing, with no separate dedup pass.
|
|
371
|
+
referencesResult.addResults(...collected.results);
|
|
372
|
+
// Provider owns the delta merge: fold this file's newly collected ranges into its read-only
|
|
373
|
+
// previous-result set so the next seed-growth pass skips them. The collector returned only
|
|
374
|
+
// the delta and never touched the set.
|
|
375
|
+
if (previousResultRanges) {
|
|
376
|
+
for (const loc of collected.results) {
|
|
377
|
+
previousResultRanges.add((0, documentSymbolCollector_1.getResultRangeKey)(loc.range));
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
// This operation can consume significant memory, so check
|
|
381
|
+
// for situations where we need to discard the type cache.
|
|
382
|
+
this._program.handleMemoryHighUsage();
|
|
383
|
+
}
|
|
384
|
+
if (!canGrowSeed) {
|
|
385
|
+
// Single streaming pass; results were already committed above.
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
// Seed-growth path: the collector streamed each location exactly once -- as the per-file delta
|
|
389
|
+
// on the pass it was first found -- so once the seed stops growing there is nothing left to commit.
|
|
250
390
|
}
|
|
251
|
-
const refTreeWalker = new FindReferencesTreeWalker(this._program, fileUri, referencesResult, includeDeclaration, this._token, this._createDocumentRange);
|
|
252
|
-
referencesResult.addResults(...refTreeWalker.findReferences());
|
|
253
391
|
}
|
|
254
392
|
static getDeclarationForNode(program, fileUri, node, reporter, useCase, token) {
|
|
255
393
|
(0, cancellationUtils_1.throwIfCancellationRequested)(token);
|
|
@@ -295,6 +433,24 @@ class ReferencesProvider {
|
|
|
295
433
|
}
|
|
296
434
|
}
|
|
297
435
|
exports.ReferencesProvider = ReferencesProvider;
|
|
436
|
+
// Merges newly discovered seed declarations into `referencesResult`, also widening `symbolNames`
|
|
437
|
+
// with any new declaration names so later passes and the result loop scan the right files. Returns
|
|
438
|
+
// whether the declaration set actually grew.
|
|
439
|
+
function mergeSeedDeclarations(referencesResult, discovered) {
|
|
440
|
+
let grew = false;
|
|
441
|
+
for (const decl of discovered) {
|
|
442
|
+
const before = referencesResult.declarations.length;
|
|
443
|
+
(0, documentSymbolCollector_1.addDeclarationIfUnique)(referencesResult.declarations, decl);
|
|
444
|
+
if (referencesResult.declarations.length !== before) {
|
|
445
|
+
grew = true;
|
|
446
|
+
const name = (0, declarationUtils_1.getNameFromDeclaration)(decl);
|
|
447
|
+
if (name && !referencesResult.symbolNames.includes(name)) {
|
|
448
|
+
referencesResult.symbolNames.push(name);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
return grew;
|
|
453
|
+
}
|
|
298
454
|
function isVisibleOutside(evaluator, currentUri, node, declarations) {
|
|
299
455
|
const result = evaluator.lookUpSymbolRecursive(node, node.d.value, /* honorCodeFlow */ false);
|
|
300
456
|
if (result && !isExternallyVisible(result.symbol)) {
|
|
@@ -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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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { CancellationToken, WorkspaceEdit } from 'vscode-languageserver';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Declaration } from '../analyzer/declaration';
|
|
3
|
+
import { ProgramView, SourceFileInfo } from '../common/extensibility';
|
|
4
|
+
import { Position, Range, TextRange } from '../common/textRange';
|
|
5
|
+
import { TextRangeCollection } from '../common/textRangeCollection';
|
|
4
6
|
import { Uri } from '../common/uri/uri';
|
|
5
7
|
import { ReferencesResult } from '../languageService/referencesProvider';
|
|
8
|
+
import { ParseNode } from '../parser/parseNodes';
|
|
9
|
+
export declare function assertRenameTargetsAreUserCode(getSourceFileInfo: (uri: Uri) => SourceFileInfo | undefined, declarations: readonly Declaration[], symbolName: string): void;
|
|
10
|
+
export declare function getRenameSymbolRange(nodeAtOffset: ParseNode, lines: TextRangeCollection<TextRange>): Range;
|
|
6
11
|
export declare class RenameProvider {
|
|
7
12
|
private _program;
|
|
8
13
|
private _fileUri;
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.RenameProvider = void 0;
|
|
12
|
+
exports.assertRenameTargetsAreUserCode = assertRenameTargetsAreUserCode;
|
|
13
|
+
exports.getRenameSymbolRange = getRenameSymbolRange;
|
|
14
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
12
15
|
const sourceFileInfoUtils_1 = require("../analyzer/sourceFileInfoUtils");
|
|
13
16
|
const cancellationUtils_1 = require("../common/cancellationUtils");
|
|
14
17
|
const debug_1 = require("../common/debug");
|
|
@@ -16,6 +19,36 @@ const extensibility_1 = require("../common/extensibility");
|
|
|
16
19
|
const positionUtils_1 = require("../common/positionUtils");
|
|
17
20
|
const workspaceEditUtils_1 = require("../common/workspaceEditUtils");
|
|
18
21
|
const referencesProvider_1 = require("../languageService/referencesProvider");
|
|
22
|
+
const localize_1 = require("../localization/localize");
|
|
23
|
+
// Rename must never modify non-user code (library or stub files). A rename group can grow during the
|
|
24
|
+
// multi-file workspace walk -- protocol members and TypedDict keys that share a name are renamed as a
|
|
25
|
+
// group, and the related declarations only become known once their usages in other files are examined.
|
|
26
|
+
// That growth can pull in a declaration that lives in non-user code. Editing only the user-code
|
|
27
|
+
// occurrences would leave the symbol partially renamed and the code inconsistent, so we abort loudly --
|
|
28
|
+
// naming the exact declaration(s) that block the rename and why -- instead of returning a partial edit.
|
|
29
|
+
//
|
|
30
|
+
// `getSourceFileInfo` is passed as a callback so this helper works for both the sync `ProgramView` and the
|
|
31
|
+
// async program snapshot without coupling to either type.
|
|
32
|
+
function assertRenameTargetsAreUserCode(getSourceFileInfo, declarations, symbolName) {
|
|
33
|
+
const nonUserDeclarations = declarations.filter((d) => !(0, sourceFileInfoUtils_1.isUserCode)(getSourceFileInfo(d.uri)));
|
|
34
|
+
if (nonUserDeclarations.length === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const locations = nonUserDeclarations
|
|
38
|
+
.map((d) => ` - ${d.uri.toUserVisibleString()}:${d.range.start.line + 1}`)
|
|
39
|
+
.join('\n');
|
|
40
|
+
throw new vscode_languageserver_1.ResponseError(vscode_languageserver_1.LSPErrorCodes.RequestFailed, localize_1.Localizer.Rename.cannotRenameNonUserCode().format({ symbolName, locations }));
|
|
41
|
+
}
|
|
42
|
+
// Computes the prepareRename range for the symbol at the cursor. For a single parenthesized name
|
|
43
|
+
// (e.g. `(A)`), the parser widens the NameNode's range to span the surrounding parens (see
|
|
44
|
+
// `_parseTupleAtom`), while the identifier token keeps the bare-name extent. Use the token range so
|
|
45
|
+
// the rename prompt shows/replaces just the name rather than the parens (pylance-release #5372).
|
|
46
|
+
// Shared by the sync `RenameProvider` and the async aggregated rename provider to keep both paths
|
|
47
|
+
// identical.
|
|
48
|
+
function getRenameSymbolRange(nodeAtOffset, lines) {
|
|
49
|
+
const rangeSource = nodeAtOffset.nodeType === 38 /* ParseNodeType.Name */ ? nodeAtOffset.d.token : nodeAtOffset;
|
|
50
|
+
return (0, positionUtils_1.convertTextRangeToRange)(rangeSource, lines);
|
|
51
|
+
}
|
|
19
52
|
class RenameProvider {
|
|
20
53
|
constructor(_program, _fileUri, _position, _token) {
|
|
21
54
|
this._program = _program;
|
|
@@ -38,7 +71,7 @@ class RenameProvider {
|
|
|
38
71
|
return null;
|
|
39
72
|
}
|
|
40
73
|
// Return the range of the symbol.
|
|
41
|
-
return (
|
|
74
|
+
return getRenameSymbolRange(referencesResult.nodeAtOffset, this._parseResults.tokenizerOutput.lines);
|
|
42
75
|
}
|
|
43
76
|
renameSymbol(newName, isDefaultWorkspace, isUntitled) {
|
|
44
77
|
(0, cancellationUtils_1.throwIfCancellationRequested)(this._token);
|
|
@@ -56,22 +89,17 @@ class RenameProvider {
|
|
|
56
89
|
referenceProvider.addReferencesToResult(this._fileUri, /* includeDeclaration */ true, referencesResult);
|
|
57
90
|
break;
|
|
58
91
|
case 'multiFileMode': {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
// This operation can consume significant memory, so check
|
|
72
|
-
// for situations where we need to discard the type cache.
|
|
73
|
-
this._program.handleMemoryHighUsage();
|
|
74
|
-
}
|
|
92
|
+
// Rename every reference across the workspace. Some symbols are renamed as a group
|
|
93
|
+
// (protocol members and TypedDict keys that share a name), and the rest of the group
|
|
94
|
+
// only becomes known once their usages in other files are examined. Collecting the
|
|
95
|
+
// whole workspace in one walk pulls in those related declarations so the rename
|
|
96
|
+
// covers the entire group.
|
|
97
|
+
referenceProvider.collectWorkspaceReferences(referencesResult, /* includeDeclaration */ true, (info) => (0, sourceFileInfoUtils_1.isUserCode)(info));
|
|
98
|
+
// The group may have grown (during the walk) to include a declaration that lives in
|
|
99
|
+
// non-user code. getRenameSymbolMode only verified the pre-walk seed was all user code,
|
|
100
|
+
// so re-assert the invariant now and abort loudly rather than silently renaming only
|
|
101
|
+
// the editable subset.
|
|
102
|
+
assertRenameTargetsAreUserCode((uri) => this._program.getSourceFileInfo(uri), referencesResult.declarations, referencesResult.symbolNames[0] ?? newName);
|
|
75
103
|
break;
|
|
76
104
|
}
|
|
77
105
|
case 'none':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renameProvider.js","sourceRoot":"","sources":["../../../../../src/languageService/renameProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"renameProvider.js","sourceRoot":"","sources":["../../../../../src/languageService/renameProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -217,6 +217,9 @@ export declare namespace Localizer {
|
|
|
217
217
|
fieldType: string;
|
|
218
218
|
fieldName: string;
|
|
219
219
|
}>;
|
|
220
|
+
const dataClassDuplicateKwOnly: () => ParameterizedString<{
|
|
221
|
+
name: string;
|
|
222
|
+
}>;
|
|
220
223
|
const dataClassFieldInheritedDefault: () => ParameterizedString<{
|
|
221
224
|
fieldName: string;
|
|
222
225
|
}>;
|
|
@@ -1760,6 +1763,12 @@ export declare namespace Localizer {
|
|
|
1760
1763
|
const autoImportDetail: () => string;
|
|
1761
1764
|
const indexValueDetail: () => string;
|
|
1762
1765
|
}
|
|
1766
|
+
namespace Rename {
|
|
1767
|
+
const cannotRenameNonUserCode: () => ParameterizedString<{
|
|
1768
|
+
symbolName: string;
|
|
1769
|
+
locations: string;
|
|
1770
|
+
}>;
|
|
1771
|
+
}
|
|
1763
1772
|
namespace Service {
|
|
1764
1773
|
const longOperation: () => string;
|
|
1765
1774
|
}
|
|
@@ -273,6 +273,7 @@ var Localizer;
|
|
|
273
273
|
Diagnostic.dataClassBaseClassNotFrozen = () => getRawString('Diagnostic.dataClassBaseClassNotFrozen');
|
|
274
274
|
Diagnostic.dataClassConverterFunction = () => new ParameterizedString(getRawString('Diagnostic.dataClassConverterFunction'));
|
|
275
275
|
Diagnostic.dataClassConverterOverloads = () => new ParameterizedString(getRawString('Diagnostic.dataClassConverterOverloads'));
|
|
276
|
+
Diagnostic.dataClassDuplicateKwOnly = () => new ParameterizedString(getRawString('Diagnostic.dataClassDuplicateKwOnly'));
|
|
276
277
|
Diagnostic.dataClassFieldInheritedDefault = () => new ParameterizedString(getRawString('Diagnostic.dataClassFieldInheritedDefault'));
|
|
277
278
|
Diagnostic.dataClassFieldWithDefault = () => getRawString('Diagnostic.dataClassFieldWithDefault');
|
|
278
279
|
Diagnostic.dataClassFieldWithoutAnnotation = () => getRawString('Diagnostic.dataClassFieldWithoutAnnotation');
|
|
@@ -1029,6 +1030,10 @@ var Localizer;
|
|
|
1029
1030
|
Completion.autoImportDetail = () => getRawString('Completion.autoImportDetail');
|
|
1030
1031
|
Completion.indexValueDetail = () => getRawString('Completion.indexValueDetail');
|
|
1031
1032
|
})(Completion = Localizer.Completion || (Localizer.Completion = {}));
|
|
1033
|
+
let Rename;
|
|
1034
|
+
(function (Rename) {
|
|
1035
|
+
Rename.cannotRenameNonUserCode = () => new ParameterizedString(getRawString('Rename.cannotRenameNonUserCode'));
|
|
1036
|
+
})(Rename = Localizer.Rename || (Localizer.Rename = {}));
|
|
1032
1037
|
let Service;
|
|
1033
1038
|
(function (Service) {
|
|
1034
1039
|
Service.longOperation = () => getRawString('Service.longOperation');
|