fix corner case in inline

fixes #3821
This commit is contained in:
alexlamsl 2020-04-27 00:06:03 +08:00
parent 94f33570e3
commit 4fdc486d5b
2 changed files with 52 additions and 2 deletions

View File

@ -6130,8 +6130,12 @@ merge(Compressor.prototype, {
return;
}
if (node instanceof AST_Scope) return abort = true;
var def;
if (node instanceof AST_SymbolRef && fn.variables.get(node.name) === (def = node.definition())) {
if (node instanceof AST_SymbolRef) {
var def = node.definition();
if (fn.variables.get(node.name) !== def) {
in_order = null;
return;
}
if (def.init instanceof AST_Defun) return abort = true;
if (is_lhs(node, this.parent())) return abort = true;
var index = resolve_index(def);

View File

@ -4062,3 +4062,49 @@ issue_3777_2: {
}
expect_stdout: "PASS"
}
issue_3821_1: {
options = {
inline: true,
}
input: {
var a = 0;
console.log(function(b) {
return +a + b;
}(--a));
}
expect: {
var a = 0;
console.log(function(b) {
return +a + b;
}(--a));
}
expect_stdout: "-2"
}
issue_3821_2: {
options = {
inline: true,
reduce_vars: true,
toplevel: true,
}
input: {
var a = "PASS";
function f(g, b) {
return g(), b;
}
console.log(f(function() {
a = "FAIL";
}, a));
}
expect: {
var a = "PASS";
function f(g, b) {
return g(), b;
}
console.log(f(function() {
a = "FAIL";
}, a));
}
expect_stdout: "PASS"
}