From 6e35f79412aa6bb43e714f8b19fcf2ec3c50887e Mon Sep 17 00:00:00 2001 From: Paul van Brenk Date: Wed, 4 Feb 2015 14:03:26 -0800 Subject: [PATCH] Add builder support for variable declarations + test cases. --- src/services/services.ts | 18 ++++++++++++++---- ...istBuilderLocations_VariableDeclarations.ts | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts diff --git a/src/services/services.ts b/src/services/services.ts index 126cf578c1c..5dd32e66bbe 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2418,17 +2418,27 @@ module ts { var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case SyntaxKind.CommaToken: - return containingNodeKind === SyntaxKind.CallExpression // func( a, | - || containingNodeKind === SyntaxKind.Constructor; // constructor( a, | + return containingNodeKind === SyntaxKind.CallExpression // func( a, | + || containingNodeKind === SyntaxKind.Constructor // constructor( a, | + || previousToken.parent.parent.parent.kind === SyntaxKind.VariableDeclaration; // var x = (a, b| <- this can be a lambda expression + case SyntaxKind.OpenParenToken: - return containingNodeKind === SyntaxKind.CallExpression // func( | - || containingNodeKind === SyntaxKind.Constructor; // constructor( | + return containingNodeKind === SyntaxKind.CallExpression // func( | + || containingNodeKind === SyntaxKind.Constructor // constructor( | + || previousToken.parent.parent.kind === SyntaxKind.VariableDeclaration; // var x = (a| <- this can be a lambda expression + case SyntaxKind.ModuleKeyword: // module | return true; + case SyntaxKind.DotToken: return containingNodeKind === SyntaxKind.ModuleDeclaration; // module A.| + case SyntaxKind.OpenBraceToken: return containingNodeKind === SyntaxKind.ClassDeclaration; // class A{ | + + case SyntaxKind.EqualsToken: + return containingNodeKind === SyntaxKind.VariableDeclaration; // var x = a| <- this can be lambda expression + case SyntaxKind.PublicKeyword: case SyntaxKind.PrivateKeyword: case SyntaxKind.ProtectedKeyword: diff --git a/tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts b/tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts new file mode 100644 index 00000000000..5c222f901f6 --- /dev/null +++ b/tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts @@ -0,0 +1,18 @@ +/// + +//// var x = a/*var1*/ + +//// var x = (b/*var2*/ + +//// var x = (c, d/*var3*/ + +//// var y : any = "", x = a/*var4*/ + +//// var y : any = "", x = (a/*var5*/ + +test.markers().forEach((m) => { + goTo.position(m.position, m.fileName); + verify.completionListAllowsNewIdentifier(); +}); + +