Skip to content

Commit

Permalink
fix corner case in reduce_vars (#3632)
Browse files Browse the repository at this point in the history
fixes #3631
  • Loading branch information
alexlamsl committed Dec 10, 2019
1 parent fe19ab7 commit 18c2b18
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/compress.js
Expand Up @@ -648,7 +648,7 @@ merge(Compressor.prototype, {
tw.in_loop = this;
push(tw);
this.body.walk(tw);
if (has_break_or_continue(this)) {
if (has_break_or_continue(this, tw.parent())) {
pop(tw);
push(tw);
}
Expand All @@ -665,7 +665,7 @@ merge(Compressor.prototype, {
if (this.condition) this.condition.walk(tw);
this.body.walk(tw);
if (this.step) {
if (has_break_or_continue(this)) {
if (has_break_or_continue(this, tw.parent())) {
pop(tw);
push(tw);
}
Expand Down
46 changes: 46 additions & 0 deletions test/compress/reduce_vars.js
Expand Up @@ -6801,3 +6801,49 @@ issue_3622: {
}
expect_stdout: "PASS"
}

issue_3631_1: {
options = {
evaluate: true,
reduce_vars: true,
toplevel: true,
}
input: {
var c = 0;
L: do {
for (;;) continue L;
var b = 1;
} while (b && c++);
console.log(c);
}
expect: {
var c = 0;
L: do {
for (;;) continue L;
var b = 1;
} while (b && c++);
console.log(c);
}
expect_stdout: "0"
}

issue_3631_2: {
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
L: for (var a = 1; a--; console.log(b)) {
for (;;) continue L;
var b = "FAIL";
}
}
expect: {
L: for (var a = 1; a--; console.log(b)) {
for (;;) continue L;
var b = "FAIL";
}
}
expect_stdout: "undefined"
}

0 comments on commit 18c2b18

Please sign in to comment.