Skip to content

Commit 2d031ce

Browse files
TypeScript Botzardoy
TypeScript Bot
andauthored
🤖 Pick PR #54656 (fix: no variable suggestions withou...) into release-5.1 (#54782)
Co-authored-by: Vitaly Turovsky <[email protected]>
1 parent e6ceba0 commit 2d031ce

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

‎src/services/completions.ts

+11-5
Original file line numberDiff line numberDiff line change
@@ -2394,7 +2394,7 @@ export function getCompletionEntriesFromSymbols(
23942394
includeSymbol = false
23952395
): UniqueNameSet {
23962396
const start = timestamp();
2397-
const variableOrParameterDeclaration = getVariableOrParameterDeclaration(contextToken);
2397+
const variableOrParameterDeclaration = getVariableOrParameterDeclaration(contextToken, location);
23982398
const useSemicolons = probablyUsesSemicolons(sourceFile);
23992399
const typeChecker = program.getTypeChecker();
24002400
// Tracks unique names.
@@ -5464,14 +5464,20 @@ function isModuleSpecifierMissingOrEmpty(specifier: ModuleReference | Expression
54645464
return !tryCast(isExternalModuleReference(specifier) ? specifier.expression : specifier, isStringLiteralLike)?.text;
54655465
}
54665466

5467-
function getVariableOrParameterDeclaration(contextToken: Node | undefined) {
5467+
function getVariableOrParameterDeclaration(contextToken: Node | undefined, location: Node) {
54685468
if (!contextToken) return;
54695469

5470-
const declaration = findAncestor(contextToken, node =>
5470+
const possiblyParameterDeclaration = findAncestor(contextToken, node =>
54715471
isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node)
54725472
? "quit"
5473-
: isVariableDeclaration(node) || ((isParameter(node) || isTypeParameterDeclaration(node)) && !isIndexSignatureDeclaration(node.parent)));
5474-
return declaration as ParameterDeclaration | TypeParameterDeclaration | VariableDeclaration | undefined;
5473+
: ((isParameter(node) || isTypeParameterDeclaration(node)) && !isIndexSignatureDeclaration(node.parent)));
5474+
5475+
const possiblyVariableDeclaration = findAncestor(location, node =>
5476+
isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node)
5477+
? "quit"
5478+
: isVariableDeclaration(node));
5479+
5480+
return (possiblyParameterDeclaration || possiblyVariableDeclaration) as ParameterDeclaration | TypeParameterDeclaration | VariableDeclaration | undefined;
54755481
}
54765482

54775483
function isArrowFunctionBody(node: Node) {
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
///<reference path="fourslash.ts" />
22

33
////const c = "s";
4-
/////**/
4+
/////*1*/
5+
////const d = 1
6+
////d/*2*/
7+
////const e = 1
8+
/////*3*/
59

6-
verify.completions({ marker: "", includes: { name: "c", text: 'const c: "s"', kind: "const" } });
10+
verify.completions({ marker: ["1"], includes: { name: "c", text: 'const c: "s"', kind: "const" } });
11+
verify.completions({ marker: ["2"], includes: { name: "d", text: 'const d: 1', kind: "const" } });
12+
verify.completions({ marker: ["3"], includes: { name: "e", text: 'const e: 1', kind: "const" } });

0 commit comments

Comments
 (0)