From efc831e0ba66fb2c44acfc150d359a9a8cf56cab Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 25 Oct 2018 12:25:33 -0700 Subject: [PATCH] At '.' in array literal, don't close the array (#28120) --- src/compiler/parser.ts | 6 ++++-- .../completionsDotInArrayLiteralInObjectLiteral.ts | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/completionsDotInArrayLiteralInObjectLiteral.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index c88aebe799f..edb4835ae5f 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1518,8 +1518,10 @@ namespace ts { case ParsingContext.TypeParameters: return isIdentifier(); case ParsingContext.ArrayLiteralMembers: - if (token() === SyntaxKind.CommaToken) { - return true; + switch (token()) { + case SyntaxKind.CommaToken: + case SyntaxKind.DotToken: // Not an array literal member, but don't want to close the array (see `tests/cases/fourslash/completionsDotInArrayLiteralInObjectLiteral.ts`) + return true; } // falls through case ParsingContext.ArgumentExpressions: diff --git a/tests/cases/fourslash/completionsDotInArrayLiteralInObjectLiteral.ts b/tests/cases/fourslash/completionsDotInArrayLiteralInObjectLiteral.ts new file mode 100644 index 00000000000..8d679b36168 --- /dev/null +++ b/tests/cases/fourslash/completionsDotInArrayLiteralInObjectLiteral.ts @@ -0,0 +1,11 @@ +/// + +////const o = { x: [[|.|][||]/**/ + +const [r0, r1] = test.ranges(); +verify.getSyntacticDiagnostics([ + { code: 1109, message: "Expression expected.", range: r0 }, + { code: 1003, message: "Identifier expected.", range: r1 }, +]); + +verify.completions({ marker: "", exact: undefined });