@@ -1576,6 +1576,16 @@ export class Parser extends DiagnosticEmitter {
1576
1576
do {
1577
1577
let member = this . parseClassMember ( tn , declaration ) ;
1578
1578
if ( member ) members . push ( < DeclarationStatement > member ) ;
1579
+ else {
1580
+ this . skipStatement ( tn ) ;
1581
+ if ( tn . skip ( Token . ENDOFFILE ) ) {
1582
+ this . error (
1583
+ DiagnosticCode . _0_expected ,
1584
+ tn . range ( ) , "}"
1585
+ ) ;
1586
+ return null ;
1587
+ }
1588
+ }
1579
1589
} while ( ! tn . skip ( Token . CLOSEBRACE ) ) ;
1580
1590
}
1581
1591
return declaration ;
@@ -1617,6 +1627,16 @@ export class Parser extends DiagnosticEmitter {
1617
1627
do {
1618
1628
let member = this . parseClassMember ( tn , declaration ) ;
1619
1629
if ( member ) members . push ( < DeclarationStatement > member ) ;
1630
+ else {
1631
+ this . skipStatement ( tn ) ;
1632
+ if ( tn . skip ( Token . ENDOFFILE ) ) {
1633
+ this . error (
1634
+ DiagnosticCode . _0_expected ,
1635
+ tn . range ( ) , "}"
1636
+ ) ;
1637
+ return null ;
1638
+ }
1639
+ }
1620
1640
} while ( ! tn . skip ( Token . CLOSEBRACE ) ) ;
1621
1641
}
1622
1642
return Node . createClassExpression ( declaration ) ;
@@ -2152,6 +2172,16 @@ export class Parser extends DiagnosticEmitter {
2152
2172
while ( ! tn . skip ( Token . CLOSEBRACE ) ) {
2153
2173
let member = this . parseTopLevelStatement ( tn , ns ) ;
2154
2174
if ( member ) members . push ( member ) ;
2175
+ else {
2176
+ this . skipStatement ( tn ) ;
2177
+ if ( tn . skip ( Token . ENDOFFILE ) ) {
2178
+ this . error (
2179
+ DiagnosticCode . _0_expected ,
2180
+ tn . range ( ) , "}"
2181
+ ) ;
2182
+ return null ;
2183
+ }
2184
+ }
2155
2185
}
2156
2186
tn . skip ( Token . SEMICOLON ) ;
2157
2187
return ns ;
@@ -2182,9 +2212,9 @@ export class Parser extends DiagnosticEmitter {
2182
2212
if ( tn . skip ( Token . OPENBRACE ) ) {
2183
2213
let members = new Array < ExportMember > ( ) ;
2184
2214
while ( ! tn . skip ( Token . CLOSEBRACE ) ) {
2185
- let member = this . parseExportMember ( tn ) ;
2186
- if ( ! member ) return null ;
2187
- members . push ( member ) ;
2215
+ let member = this . parseExportMember ( tn ) ;
2216
+ if ( ! member ) return null ;
2217
+ members . push ( member ) ;
2188
2218
if ( ! tn . skip ( Token . COMMA ) ) {
2189
2219
if ( tn . skip ( Token . CLOSEBRACE ) ) {
2190
2220
break ;
@@ -3720,6 +3750,10 @@ export class Parser extends DiagnosticEmitter {
3720
3750
tn . readFloat ( ) ;
3721
3751
break ;
3722
3752
}
3753
+ case Token . OPENBRACE : {
3754
+ this . skipBlock ( tn ) ;
3755
+ break ;
3756
+ }
3723
3757
}
3724
3758
} while ( true ) ;
3725
3759
}
0 commit comments