Skip to content

Commit 1d77caa

Browse files
committed
fix: no variable suggestions without semicolon
1 parent 972299a commit 1d77caa

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

src/services/completions.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2439,7 +2439,7 @@ export function getCompletionEntriesFromSymbols(
24392439
includeSymbol = false
24402440
): UniqueNameSet {
24412441
const start = timestamp();
2442-
const variableOrParameterDeclaration = getVariableOrParameterDeclaration(contextToken);
2442+
const variableOrParameterDeclaration = getVariableOrParameterDeclaration(contextToken, location);
24432443
const useSemicolons = probablyUsesSemicolons(sourceFile);
24442444
const typeChecker = program.getTypeChecker();
24452445
// Tracks unique names.
@@ -5516,14 +5516,18 @@ function isModuleSpecifierMissingOrEmpty(specifier: ModuleReference | Expression
55165516
return !tryCast(isExternalModuleReference(specifier) ? specifier.expression : specifier, isStringLiteralLike)?.text;
55175517
}
55185518

5519-
function getVariableOrParameterDeclaration(contextToken: Node | undefined) {
5519+
function getVariableOrParameterDeclaration(contextToken: Node | undefined, location: Node) {
55205520
if (!contextToken) return;
55215521

5522-
const declaration = findAncestor(contextToken, node =>
5522+
const possiblyParameterDeclaration = findAncestor(contextToken, node =>
55235523
isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node)
55245524
? "quit"
5525-
: isVariableDeclaration(node) || ((isParameter(node) || isTypeParameterDeclaration(node)) && !isIndexSignatureDeclaration(node.parent)));
5526-
return declaration as ParameterDeclaration | TypeParameterDeclaration | VariableDeclaration | undefined;
5525+
: ((isParameter(node) || isTypeParameterDeclaration(node)) && !isIndexSignatureDeclaration(node.parent)));
5526+
const possiblyVariableDeclaration = findAncestor(location, (node) => {
5527+
return isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node) ?
5528+
"quit" : isVariableDeclaration(node)
5529+
})
5530+
return (possiblyVariableDeclaration || possiblyParameterDeclaration) as ParameterDeclaration | TypeParameterDeclaration | VariableDeclaration | undefined;
55275531
}
55285532

55295533
function isArrowFunctionBody(node: Node) {
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
///<reference path="fourslash.ts" />
22

33
////const c = "s";
4-
/////**/
4+
/////*1*/
5+
////const d = 1
6+
/////*2*/
57

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

0 commit comments

Comments
 (0)