From 4ed6a80c9ca3b6fc2a98d135d22c71e38b5eab0e Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 26 Sep 2014 09:46:14 -0700 Subject: [PATCH] Limited identifying identifiers after dots to keywords. --- src/compiler/parser.ts | 4 ++++ src/services/services.ts | 6 +----- tests/cases/unittests/services/colorization.ts | 6 ++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index af1851d6a75..b06326f6925 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -648,6 +648,10 @@ module ts { return SyntaxKind.FirstKeyword <= token && token <= SyntaxKind.LastKeyword; } + export function isTrivia(token: SyntaxKind) { + return SyntaxKind.FirstTriviaToken <= token && token <= SyntaxKind.LastTriviaToken; + } + export function isModifier(token: SyntaxKind): boolean { switch (token) { case SyntaxKind.PublicKeyword: diff --git a/src/services/services.ts b/src/services/services.ts index 3315a676d03..9a60140a97a 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -4556,7 +4556,7 @@ module ts { token = SyntaxKind.RegularExpressionLiteral; } } - else if (lastNonTriviaToken === SyntaxKind.DotToken) { + else if (lastNonTriviaToken === SyntaxKind.DotToken && isKeyword(token)) { token = SyntaxKind.Identifier; } @@ -4611,10 +4611,6 @@ module ts { result.entries.push({ length: length, classification: classification }); } } - - function isTrivia(token: SyntaxKind) { - return SyntaxKind.FirstTriviaToken <= token && token <= SyntaxKind.LastTriviaToken; - } } function isBinaryExpressionOperatorToken(token: SyntaxKind): boolean { diff --git a/tests/cases/unittests/services/colorization.ts b/tests/cases/unittests/services/colorization.ts index 09c39f165cb..d89cf702693 100644 --- a/tests/cases/unittests/services/colorization.ts +++ b/tests/cases/unittests/services/colorization.ts @@ -189,6 +189,12 @@ describe('Colorization', function () { identifier("var")); }); + it("correctly classifies a string literal after a dot", function () { + test("a.\"var\"", + ts.EndOfLineState.Start, + stringLiteral("\"var\"")); + }); + it("correctly classifies a keyword after a dot separated by comment trivia", function () { test("a./*hello world*/ var", ts.EndOfLineState.Start,