Skip to content

Commit 51369d4

Browse files
committed
Merge branch 'refactor-parser' into refactor-parser-2
# Conflicts: # lib/Parser.js
2 parents 90f345a + 99c3129 commit 51369d4

1 file changed

Lines changed: 27 additions & 20 deletions

File tree

lib/Parser.js

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)