diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 9b3d9594c4e..99e5c40f054 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -865,7 +865,8 @@ module ts { return createMissingList(); } - function parseEntityName(allowReservedWords?: boolean): EntityName { + // The allowReservedWords parameter controls whether reserved words are permitted after the first dot + function parseEntityName(allowReservedWords: boolean): EntityName { var entity: EntityName = parseIdentifier(); while (parseOptional(SyntaxKind.DotToken)) { var node = createNode(SyntaxKind.QualifiedName, entity.pos); @@ -899,7 +900,7 @@ module ts { function parseTypeReference(): TypeReferenceNode { var node = createNode(SyntaxKind.TypeReference); - node.typeName = parseEntityName(); + node.typeName = parseEntityName(/*allowReservedWords*/ false); if (!scanner.hasPrecedingLineBreak() && token === SyntaxKind.LessThanToken) { node.typeArguments = parseTypeArguments(); } @@ -2815,7 +2816,7 @@ module ts { parseExpected(SyntaxKind.ImportKeyword); node.name = parseIdentifier(); parseExpected(SyntaxKind.EqualsToken); - var entityName = parseEntityName(); + var entityName = parseEntityName(/*allowReservedWords*/ false); if (entityName.kind === SyntaxKind.Identifier && (entityName).text === "require" && parseOptional(SyntaxKind.OpenParenToken)) { node.externalModuleName = parseStringLiteral(); parseExpected(SyntaxKind.CloseParenToken);