8000 Make sure flags are set appropriately. · siddharthverma/TypeScript@2f3e39e · GitHub
[go: up one dir, main page]

Skip to content

Commit 2f3e39e

Browse files
Make sure flags are set appropriately.
1 parent bfe4bf5 commit 2f3e39e

File tree

1 file changed

+46
-30
lines changed

1 file changed

+46
-30
lines changed

src/compiler/parser.ts

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3144,51 +3144,65 @@ module ts {
31443144
Debug.fail("Should not have attempted to parse class member declaration.");
31453145
}
31463146

3147-
function parseClassDeclaration(pos: number, flags: NodeFlags): ClassDeclaration {
3148-
var node = <ClassDeclaration>createNode(SyntaxKind.ClassDeclaration, pos);
3149-
node.flags = flags;
3147+
function parseClassDeclaration(fullStart: number, flags: NodeFlags): ClassDeclaration {
31503148
parseExpected(SyntaxKind.ClassKeyword);
3151-
node.name = parseIdentifier();
3152-
node.typeParameters = parseTypeParameters();
3149+
var name = parseIdentifier();
3150+
var typeParameters = parseTypeParameters();
31533151
// TODO(jfreeman): Parse arbitrary sequence of heritage clauses and error for order and duplicates
31543152

3155-
node.baseType = parseOptional(SyntaxKind.ExtendsKeyword) ? parseTypeReference() : undefined;
3153+
var baseType = parseOptional(SyntaxKind.ExtendsKeyword) ? parseTypeReference() : undefined;
31563154
if (parseOptional(SyntaxKind.ImplementsKeyword)) {
3157-
node.implementedTypes = parseDelimitedList(ParsingContext.BaseTypeReferences, parseTypeReference);
3155+
var implementedTypes = parseDelimitedList(ParsingContext.BaseTypeReferences, parseTypeReference);
31583156
}
31593157
if (parseExpected(SyntaxKind.OpenBraceToken)) {
3160-
node.members = parseList(ParsingContext.ClassMembers, /*checkForStrictMode*/ false, parseClassMemberDeclaration);
3158+
var members = parseList(ParsingContext.ClassMembers, /*checkForStrictMode*/ false, parseClassMemberDeclaration);
31613159
parseExpected(SyntaxKind.CloseBraceToken);
31623160
}
31633161
else {
3164-
node.members = createMissingList<Declaration>();
3162+
var members = createMissingList<Declaration>();
31653163
}
3166-
return finishNode(node);
3164+
3165+
var node = <ClassDeclaration>createAndFinishNode(fullStart, SyntaxKind.ClassDeclaration);
3166+
node.flags |= flags;
3167+
node.name = name;
3168+
node.typeParameters = typeParameters;
3169+
node.baseType = baseType;
3170+
node.implementedTypes = implementedTypes;
3171+
node.members = members;
3172+
return node;
31673173
}
31683174

3169-
function parseInterfaceDeclaration(pos: number, flags: NodeFlags): InterfaceDeclaration {
3170-
var node = <InterfaceDeclaration>createNode(SyntaxKind.InterfaceDeclaration, pos);
3171-
node.flags = flags;
3175+
function parseInterfaceDeclaration(fullStart: number, flags: NodeFlags): InterfaceDeclaration {
31723176
parseExpected(SyntaxKind.InterfaceKeyword);
3173-
node.name = parseIdentifier();
3174-
node.typeParameters = parseTypeParameters();
3177+
var name = parseIdentifier();
3178+
var typeParameters = parseTypeParameters();
31753179
// TODO(jfreeman): Parse arbitrary sequence of heritage clauses and error for order and duplicates
31763180
if (parseOptional(SyntaxKind.ExtendsKeyword)) {
3177-
node.baseTypes = parseDelimitedList(ParsingContext.BaseTypeReferences, parseTypeReference);
3181+
var baseTypes = parseDelimitedList(ParsingContext.BaseTypeReferences, parseTypeReference);
31783182
}
3179-
node.members = parseTypeLiteral().members;
3180-
return finishNode(node);
3183+
var members = parseTypeLiteral().members;
3184+
3185+
var node = <InterfaceDeclaration>createAndFinishNode(fullStart, SyntaxKind.InterfaceDeclaration);
3186+
node.flags |= flags;
3187+
node.name = name;
3188+
node.typeParameters = typeParameters;
3189+
node.baseTypes = baseTypes;
3190+
node.members = members;
3191+
return node;
31813192
}
31823193

3183-
function parseTypeAliasDeclaration(pos: number, flags: NodeFlags): TypeAliasDeclaration {
3184-
var node = <TypeAliasDeclaration>createNode(SyntaxKind.TypeAliasDeclaration, pos);
3185-
node.flags = flags;
3194+
function parseTypeAliasDeclaration(fullStart: number, flags: NodeFlags): TypeAliasDeclaration {
31863195
parseExpected(SyntaxKind.TypeKeyword);
3187-
node.name = parseIdentifier();
3196+
var name = parseIdentifier();
31883197
parseExpected(SyntaxKind.EqualsToken);
3189-
node.type = parseType();
3198+
var type = parseType();
31903199
parseSemicolon();
3191-
return finishNode(node);
3200+
3201+ var node = <TypeAliasDeclaration>createAndFinishNode(fullStart, SyntaxKind.TypeAliasDeclaration);
3202+
node.flags |= flags;
3203+
node.name = name;
3204+
node.type = type;
3205+
return node;
31923206
}
31933207

31943208
// In an ambient declaration, the grammar only allows integer literals as initializers.
@@ -3225,7 +3239,7 @@ module ts {
32253239
}
32263240

32273241
var node = <EnumDeclaration>createAndFinishNode(fullStart, SyntaxKind.EnumDeclaration);
3228-
node.flags = flags;
3242+
node.flags |= flags;
32293243
node.name = name;
32303244
node.members = members;
32313245
return node;
@@ -3254,7 +3268,7 @@ module ts {
32543268
: parseModuleBody();
32553269

32563270
var node = <ModuleDeclaration>createAndFinishNode(fullStart, SyntaxKind.ModuleDeclaration);
3257-
node.flags = flags;
3271+
node.flags |= flags;
32583272
node.name = name;
32593273
node.body = body;
32603274
return node;
@@ -3265,15 +3279,17 @@ module ts {
32653279
var body = parseModuleBody();
32663280

32673281
var node = <ModuleDeclaration>createAndFinishNode(fullStart, SyntaxKind.ModuleDeclaration);
3268-
node.flags = flags;
3282+
node.flags |= flags;
32693283
node.name = name;
32703284
node.body = body;
32713285
return node;
32723286
}
32733287

3274-
function parseModuleDeclaration(pos: number, flags: NodeFlags): ModuleDeclaration {
3288+
function parseModuleDeclaration(fullStart: number, flags: NodeFlags): ModuleDeclaration {
32753289
parseExpected(SyntaxKind.ModuleKeyword);
3276-
return token === SyntaxKind.StringLiteral ? parseAmbientExternalModuleDeclaration(pos, flags) : parseInternalModuleTail(pos, flags);
3290+
return token === SyntaxKind.StringLiteral
3291+
? parseAmbientExternalModuleDeclaration(fullStart, flags)
3292+
: parseInternalModuleTail(fullStart, flags);
32773293
}
32783294

32793295
function parseImportDeclaration(fullStart: number, flags: NodeFlags): ImportDeclaration {
@@ -3290,7 +3306,7 @@ module ts {
32903306
parseSemicolon();
32913307

32923308
var node = <ImportDeclaration>createAndFinishNode(fullStart, SyntaxKind.ImportDeclaration);
3293-
node.flags = flags;
3309+
node.flags |= flags;
32943310
node.name = name;
32953311
node.externalModuleName = externalModuleName;
32963312
node.entityName = entityName;

0 commit comments

Comments
 (0)
0