fix corner case in reduce_vars (#3151)

This commit is contained in:
Alex Lam S.L
2018-05-26 05:45:44 +08:00
committed by GitHub
parent 24d9633a35
commit efa21ae3e6
2 changed files with 37 additions and 2 deletions

View File

@@ -388,7 +388,6 @@ merge(Compressor.prototype, {
tw.defun_ids[def.id] = false; tw.defun_ids[def.id] = false;
} }
}); });
return true;
}; };
} }
@@ -565,7 +564,7 @@ merge(Compressor.prototype, {
return true; return true;
}); });
def(AST_Call, function(tw, descend) { def(AST_Call, function(tw, descend) {
if (tw.find_parent(AST_Scope).may_call_this()) return; tw.find_parent(AST_Scope).may_call_this();
var exp = this.expression; var exp = this.expression;
if (!(exp instanceof AST_SymbolRef)) return; if (!(exp instanceof AST_SymbolRef)) return;
var def = exp.definition(); var def = exp.definition();

View File

@@ -6367,3 +6367,39 @@ issue_3140_4: {
} }
expect_stdout: "PASS" expect_stdout: "PASS"
} }
issue_3140_5: {
options = {
evaluate: true,
reduce_vars: true,
}
input: {
var n = 1, c = 0;
(function(a) {
var b = function() {
this;
n-- && h();
}();
function h() {
b && c++;
}
h(b = 1);
})();
console.log(c);
}
expect: {
var n = 1, c = 0;
(function(a) {
var b = function() {
this;
n-- && h();
}();
function h() {
b && c++;
}
h(b = 1);
})();
console.log(c);
}
expect_stdout: "1"
}