@@ -1576,6 +1576,16 @@ export class Parser extends DiagnosticEmitter {
15761576 do {
15771577 let member = this . parseClassMember ( tn , declaration ) ;
15781578 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+ }
15791589 } while ( ! tn . skip ( Token . CLOSEBRACE ) ) ;
15801590 }
15811591 return declaration ;
@@ -1617,6 +1627,16 @@ export class Parser extends DiagnosticEmitter {
16171627 do {
16181628 let member = this . parseClassMember ( tn , declaration ) ;
16191629 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+ }
16201640 } while ( ! tn . skip ( Token . CLOSEBRACE ) ) ;
16211641 }
16221642 return Node . createClassExpression ( declaration ) ;
@@ -2152,6 +2172,16 @@ export class Parser extends DiagnosticEmitter {
21522172 while ( ! tn . skip ( Token . CLOSEBRACE ) ) {
21532173 let member = this . parseTopLevelStatement ( tn , ns ) ;
21542174 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+ }
21552185 }
21562186 tn . skip ( Token . SEMICOLON ) ;
21572187 return ns ;
@@ -2182,9 +2212,9 @@ export class Parser extends DiagnosticEmitter {
21822212 if ( tn . skip ( Token . OPENBRACE ) ) {
21832213 let members = new Array < ExportMember > ( ) ;
21842214 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 ) ;
21882218 if ( ! tn . skip ( Token . COMMA ) ) {
21892219 if ( tn . skip ( Token . CLOSEBRACE ) ) {
21902220 break ;
@@ -3720,6 +3750,10 @@ export class Parser extends DiagnosticEmitter {
37203750 tn . readFloat ( ) ;
37213751 break ;
37223752 }
3753+ case Token . OPENBRACE : {
3754+ this . skipBlock ( tn ) ;
3755+ break ;
3756+ }
37233757 }
37243758 } while ( true ) ;
37253759 }
0 commit comments