@@ -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