@@ -865,12 +865,13 @@ module ts {
865
865
return createMissingList < T > ( ) ;
866
866
}
867
867
868
- function parseEntityName ( ) : EntityName {
868
+ // The allowReservedWords parameter controls whether reserved words are permitted after the first dot
869
+ function parseEntityName ( allowReservedWords : boolean ) : EntityName {
869
870
var entity : EntityName = parseIdentifier ( ) ;
870
871
while ( parseOptional ( SyntaxKind . DotToken ) ) {
871
872
var node = < QualifiedName > createNode ( SyntaxKind . QualifiedName , entity . pos ) ;
872
873
node . left = entity ;
873
- node . right = parseIdentifier ( ) ;
874
+ node . right = allowReservedWords ? parseIdentifierName ( ) : parseIdentifier ( ) ;
874
875
entity = finishNode ( node ) ;
875
876
}
876
877
return entity ;
@@ -899,7 +900,7 @@ module ts {
899
900
900
901
function parseTypeReference ( ) : TypeReferenceNode {
901
902
var node = < TypeReferenceNode > createNode ( SyntaxKind . TypeReference ) ;
902
- node . typeName = parseEntityName ( ) ;
903
+ node . typeName = parseEntityName ( /*allowReservedWords*/ false ) ;
903
904
if ( ! scanner . hasPrecedingLineBreak ( ) && token === SyntaxKind . LessThanToken ) {
904
905
node . typeArguments = parseTypeArguments ( ) ;
905
906
}
@@ -909,7 +910,7 @@ module ts {
909
910
function parseTypeQuery ( ) : TypeQueryNode {
910
911
var node = < TypeQueryNode > createNode ( SyntaxKind . TypeQuery ) ;
911
912
parseExpected ( SyntaxKind . TypeOfKeyword ) ;
912
- node . exprName = parseEntityName ( ) ;
913
+ node . exprName = parseEntityName ( /*allowReservedWords*/ true ) ;
913
914
return finishNode ( node ) ;
914
915
}
915
916
@@ -2820,7 +2821,7 @@ module ts {
2820
2821
parseExpected ( SyntaxKind . ImportKeyword ) ;
2821
2822
node . name = parseIdentifier ( ) ;
2822
2823
parseExpected ( SyntaxKind . EqualsToken ) ;
2823
- var entityName = parseEntityName ( ) ;
2824
+ var entityName = parseEntityName ( /*allowReservedWords*/ false ) ;
2824
2825
if ( entityName . kind === SyntaxKind . Identifier && ( < Identifier > entityName ) . text === "require" && parseOptional ( SyntaxKind . OpenParenToken ) ) {
2825
2826
node . externalModuleName = parseStringLiteral ( ) ;
2826
2827
parseExpected ( SyntaxKind . CloseParenToken ) ;
0 commit comments