From d85581ba0ef2201244a6fffa17825d6855464dc2 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 30 Jan 2015 12:49:20 -0800 Subject: [PATCH] Do not create Name of the importSpecifier if it isnt identifier, to avoid creating missing symbols Missing symbols are defined when the declaration doesnt have name, so if we created node for missing identifier it would end up binding symbol with name (Missing) --- src/compiler/parser.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 98d733acd17..35c74a7ef48 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4656,21 +4656,27 @@ module ts { // ImportSpecifier: // ImportedBinding // IdentifierName as ImportedBinding - var isfirstIdentifierNameNotAnIdentifier = isKeyword(token) && !isIdentifier(); + var isFirstIdentifierNameNotAnIdentifier = isKeyword(token) && !isIdentifier(); var start = scanner.getTokenPos(); var identifierName = parseIdentifierName(); if (token === SyntaxKind.AsKeyword) { node.propertyName = identifierName; parseExpected(SyntaxKind.AsKeyword); - node.name = parseIdentifier(); + if (isIdentifier()) { + node.name = parseIdentifierName(); + } + else { + parseErrorAtCurrentToken(Diagnostics.Identifier_expected); + } } else { node.name = identifierName; - if (isfirstIdentifierNameNotAnIdentifier) { + if (isFirstIdentifierNameNotAnIdentifier) { // Report error identifier expected parseErrorAtPosition(start, identifierName.end - start, Diagnostics.Identifier_expected); } } + return finishNode(node); }