simplify do-while into for (#2907)

fixes #2904
This commit is contained in:
Alex Lam S.L
2018-02-12 23:28:28 +08:00
committed by GitHub
parent 2088e1c19d
commit 0809699bdc
3 changed files with 27 additions and 9 deletions

View File

@@ -3672,6 +3672,13 @@ merge(Compressor.prototype, {
] ]
}).optimize(compressor); }).optimize(compressor);
} }
if (self.body instanceof AST_SimpleStatement) return make_node(AST_For, self, {
condition: make_sequence(self.condition, [
self.body.body,
self.condition
]),
body: make_node(AST_EmptyStatement, self)
}).optimize(compressor);
return self; return self;
}); });

View File

@@ -605,3 +605,20 @@ issue_2740_5: {
} }
expect_stdout: "0 undefined" expect_stdout: "0 undefined"
} }
issue_2904: {
options = {
join_vars: true,
loops: true,
}
input: {
var a = 1;
do {
console.log(a);
} while (--a);
}
expect: {
for (var a = 1; console.log(a), --a;);
}
expect_stdout: "1"
}

View File

@@ -1178,9 +1178,7 @@ toplevel_on_loops_1: {
console.log("bar:", --x); console.log("bar:", --x);
} }
var x = 3; var x = 3;
do for (;bar(), x;);
bar();
while (x);
} }
expect_stdout: true expect_stdout: true
} }
@@ -1208,9 +1206,7 @@ toplevel_off_loops_1: {
console.log("bar:", --x); console.log("bar:", --x);
} }
var x = 3; var x = 3;
do for (;bar(), x;);
bar();
while (x);
} }
expect_stdout: true expect_stdout: true
} }
@@ -1265,9 +1261,7 @@ toplevel_off_loops_2: {
console.log("bar:"); console.log("bar:");
} }
var x = 3; var x = 3;
do for (;bar(), x;);
bar();
while (x);
} }
} }