From ee429ef2ea4ee83c7979857cc1ddb11e94fb3474 Mon Sep 17 00:00:00 2001 From: Joscha Feth Date: Fri, 13 Apr 2018 11:39:29 +1000 Subject: [PATCH] use state --- lib/typescriptServices.d.ts | 1 - src/compiler/scanner.ts | 3 --- src/compiler/types.ts | 1 - src/services/preProcess.ts | 4 +++- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/typescriptServices.d.ts b/lib/typescriptServices.d.ts index c0d2a7db297..ecf433425d9 100644 --- a/lib/typescriptServices.d.ts +++ b/lib/typescriptServices.d.ts @@ -2929,7 +2929,6 @@ declare namespace ts { getTokenText(): string; getTokenValue(): string; hasExtendedUnicodeEscape(): boolean; - hasPrecedingDot(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index c1e7dbb299d..43320b453c4 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -22,7 +22,6 @@ namespace ts { getTokenText(): string; getTokenValue(): string; hasExtendedUnicodeEscape(): boolean; - hasPrecedingDot(): boolean; hasPrecedingLineBreak(): boolean; isIdentifier(): boolean; isReservedWord(): boolean; @@ -834,7 +833,6 @@ namespace ts { getTokenText: () => text.substring(tokenPos, pos), getTokenValue: () => tokenValue, hasExtendedUnicodeEscape: () => (tokenFlags & TokenFlags.ExtendedUnicodeEscape) !== 0, - hasPrecedingDot: () => (tokenFlags & TokenFlags.PrecedingDot) !== 0, hasPrecedingLineBreak: () => (tokenFlags & TokenFlags.PrecedingLineBreak) !== 0, isIdentifier: () => token === SyntaxKind.Identifier || token > SyntaxKind.LastReservedWord, isReservedWord: () => token >= SyntaxKind.FirstReservedWord && token <= SyntaxKind.LastReservedWord, @@ -1471,7 +1469,6 @@ namespace ts { pos++; return token = SyntaxKind.MinusToken; case CharacterCodes.dot: - tokenFlags |= TokenFlags.PrecedingDot; if (isDigit(text.charCodeAt(pos + 1))) { tokenValue = scanNumber(); return token = SyntaxKind.NumericLiteral; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index a2eae1df6d5..987d403e7cd 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1585,7 +1585,6 @@ namespace ts { BinarySpecifier = 1 << 7, // e.g. `0b0110010000000000` OctalSpecifier = 1 << 8, // e.g. `0o777` ContainsSeparator = 1 << 9, // e.g. `0b1100_0101` - PrecedingDot = 1 << 10, BinaryOrOctalSpecifier = BinarySpecifier | OctalSpecifier, NumericLiteralFlags = Scientific | Octal | HexSpecifier | BinarySpecifier | OctalSpecifier | ContainsSeparator } diff --git a/src/services/preProcess.ts b/src/services/preProcess.ts index 95bcbbe9bc6..3cf38eecd6e 100644 --- a/src/services/preProcess.ts +++ b/src/services/preProcess.ts @@ -13,6 +13,7 @@ namespace ts { const importedFiles: FileReference[] = []; let ambientExternalModules: { ref: FileReference, depth: number }[]; let braceNesting = 0; + let lastTokenWasDot = false; // assume that text represent an external module if it contains at least one top level import/export // ambient modules that are found inside external modules are interpreted as module augmentations let externalModule = false; @@ -25,6 +26,7 @@ namespace ts { else if (token === SyntaxKind.CloseBraceToken) { braceNesting--; } + lastTokenWasDot = token === SyntaxKind.DotToken; return token; } @@ -78,7 +80,7 @@ namespace ts { */ function tryConsumeImport(): boolean { let token = scanner.getToken(); - if (token === SyntaxKind.ImportKeyword && !scanner.hasPrecedingDot()) { + if (token === SyntaxKind.ImportKeyword && !lastTokenWasDot) { token = nextToken(); if (token === SyntaxKind.OpenParenToken) { token = nextToken();