Skip to content

Commit 1eba8db

Browse files
Merge pull request microsoft#1498 from Microsoft/bindingElementContxt
Do not pass context flags downward while parsing binding elements.
2 parents 539300b + 30f9a5c commit 1eba8db

1 file changed

Lines changed: 20 additions & 19 deletions

File tree

src/compiler/parser.ts

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3277,46 +3277,47 @@ module ts {
32773277

32783278
// DECLARATIONS
32793279

3280-
function parseBindingElement(context: ParsingContext): BindingElement {
3281-
if (context === ParsingContext.ArrayBindingElements && token === SyntaxKind.CommaToken) {
3280+
function parseArrayBindingElement(): BindingElement {
3281+
if (token === SyntaxKind.CommaToken) {
32823282
return <BindingElement>createNode(SyntaxKind.OmittedExpression);
32833283
}
3284+
32843285
var node = <BindingElement>createNode(SyntaxKind.BindingElement);
3285-
if (context === ParsingContext.ObjectBindingElements) {
3286-
// TODO(andersh): Handle computed properties
3287-
var id = parsePropertyName();
3288-
if (id.kind === SyntaxKind.Identifier && token !== SyntaxKind.ColonToken) {
3289-
node.name = <Identifier>id;
3290-
}
3291-
else {
3292-
parseExpected(SyntaxKind.ColonToken);
3293-
node.propertyName = <Identifier>id;
3294-
node.name = parseIdentifierOrPattern();
3295-
}
3286+
node.name = parseIdentifierOrPattern();
3287+
node.initializer = parseInitializer(/*inParameter*/ false);
3288+
return finishNode(node);
3289+
}
3290+
3291+
function parseObjectBindingElement(): BindingElement {
3292+
var node = <BindingElement>createNode(SyntaxKind.BindingElement);
3293+
3294+
// TODO(andersh): Handle computed properties
3295+
var id = parsePropertyName();
3296+
if (id.kind === SyntaxKind.Identifier && token !== SyntaxKind.ColonToken) {
3297+
node.name = <Identifier>id;
32963298
}
32973299
else {
3300+
parseExpected(SyntaxKind.ColonToken);
3301+
node.propertyName = <Identifier>id;
32983302
node.name = parseIdentifierOrPattern();
32993303
}
3304+
33003305
node.initializer = parseInitializer(/*inParameter*/ false);
33013306
return finishNode(node);
33023307
}
33033308

3304-
function parseBindingList(context: ParsingContext): NodeArray<BindingElement> {
3305-
return parseDelimitedList(context, () => parseBindingElement(context));
3306-
}
3307-
33083309
function parseObjectBindingPattern(): BindingPattern {
33093310
var node = <BindingPattern>createNode(SyntaxKind.ObjectBindingPattern);
33103311
parseExpected(SyntaxKind.OpenBraceToken);
3311-
node.elements = parseBindingList(ParsingContext.ObjectBindingElements);
3312+
node.elements = parseDelimitedList(ParsingContext.ObjectBindingElements, parseObjectBindingElement);
33123313
parseExpected(SyntaxKind.CloseBraceToken);
33133314
return finishNode(node);
33143315
}
33153316

33163317
function parseArrayBindingPattern(): BindingPattern {
33173318
var node = <BindingPattern>createNode(SyntaxKind.ArrayBindingPattern);
33183319
parseExpected(SyntaxKind.OpenBracketToken);
3319-
node.elements = parseBindingList(ParsingContext.ArrayBindingElements);
3320+
node.elements = parseDelimitedList(ParsingContext.ArrayBindingElements, parseArrayBindingElement);
33203321
parseExpected(SyntaxKind.CloseBracketToken);
33213322
return finishNode(node);
33223323
}

0 commit comments

Comments
 (0)