@@ -494,14 +494,17 @@ class Parser extends Tapable {
494494 this . walkSwitchCases ( statement . cases ) ;
495495 }
496496
497- walkReturnStatement ( statement ) {
497+ walkTerminatingStatement ( statement ) {
498498 if ( statement . argument )
499499 this . walkExpression ( statement . argument ) ;
500500 }
501501
502+ walkReturnStatement ( statement ) {
503+ this . walkTerminatingStatement ( statement ) ;
504+ }
505+
502506 walkThrowStatement ( statement ) {
503- if ( statement . argument )
504- this . walkExpression ( statement . argument ) ;
507+ this . walkTerminatingStatement ( statement ) ;
505508 }
506509
507510 walkTryStatement ( statement ) {
@@ -524,8 +527,8 @@ class Parser extends Tapable {
524527 }
525528
526529 walkDoWhileStatement ( statement ) {
527- this . walkExpression ( statement . test ) ;
528530 this . walkStatement ( statement . body ) ;
531+ this . walkExpression ( statement . test ) ;
529532 }
530533
531534 walkForStatement ( statement ) {
@@ -1158,29 +1161,33 @@ class Parser extends Tapable {
11581161 } ;
11591162 }
11601163
1161- parseXXXArray ( fn , expression ) {
1162- switch ( expression . type ) {
1163- case "ArrayExpression" :
1164- {
1165- const arr = [ ] ;
1166- if ( expression . elements )
1167- expression . elements . forEach ( function ( expr ) {
1168- arr . push ( this [ fn ] ( expr ) ) ;
1169- } , this ) ;
1170- return arr ;
1171- }
1164+ parseStringArray ( expression ) {
1165+ if ( expression . type !== "ArrayExpression" ) {
1166+ return [ this . parseString ( expression ) ] ;
11721167 }
1173- return [ this [ fn ] ( expression ) ] ;
1174- }
11751168
1176- parseStringArray ( expression ) {
1177- return this . parseXXXArray ( "parseString" , expression ) ;
1169+ const arr = [ ] ;
1170+ if ( expression . elements )
1171+ expression . elements . forEach ( function ( expr ) {
1172+ arr . push ( this . parseString ( expr ) ) ;
1173+ } , this ) ;
1174+ return arr ;
11781175 }
11791176
11801177 parseCalculatedStringArray ( expression ) {
1181- return this . parseXXXArray ( "parseCalculatedString" , expression ) ;
1178+ if ( expression . type !== "ArrayExpression" ) {
1179+ return [ this . parseCalculatedString ( expression ) ] ;
1180+ }
1181+
1182+ const arr = [ ] ;
1183+ if ( expression . elements )
1184+ expression . elements . forEach ( function ( expr ) {
1185+ arr . push ( this . parseCalculatedString ( expr ) ) ;
1186+ } , this ) ;
1187+ return arr ;
11821188 }
11831189
1190+
11841191 parse ( source , initialState ) {
11851192 let ast ;
11861193 const comments = [ ] ;
0 commit comments