fix inline after single-use reduce_vars (#2623)
This commit is contained in:
@@ -4004,7 +4004,9 @@ merge(Compressor.prototype, {
|
|||||||
var catches = Object.create(null);
|
var catches = Object.create(null);
|
||||||
do {
|
do {
|
||||||
scope = compressor.parent(level++);
|
scope = compressor.parent(level++);
|
||||||
if (scope instanceof AST_Catch) {
|
if (scope instanceof AST_SymbolRef) {
|
||||||
|
scope = scope.fixed_value();
|
||||||
|
} else if (scope instanceof AST_Catch) {
|
||||||
catches[scope.argname.name] = true;
|
catches[scope.argname.name] = true;
|
||||||
}
|
}
|
||||||
} while (!(scope instanceof AST_Scope));
|
} while (!(scope instanceof AST_Scope));
|
||||||
|
|||||||
@@ -1101,3 +1101,74 @@ issue_2616: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_2620_1: {
|
||||||
|
options = {
|
||||||
|
inline: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
sequences: true,
|
||||||
|
side_effects: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var c = "FAIL";
|
||||||
|
(function() {
|
||||||
|
function f(a) {
|
||||||
|
var b = function g(a) {
|
||||||
|
a && a();
|
||||||
|
}();
|
||||||
|
if (a) {
|
||||||
|
var d = c = "PASS";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f(1);
|
||||||
|
})();
|
||||||
|
console.log(c);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var c = "FAIL";
|
||||||
|
(function() {
|
||||||
|
(function(a) {
|
||||||
|
if (function(a) {
|
||||||
|
a && a();
|
||||||
|
}(), a) c = "PASS";
|
||||||
|
})(1);
|
||||||
|
})(),
|
||||||
|
console.log(c);
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_2620_2: {
|
||||||
|
options = {
|
||||||
|
conditionals: true,
|
||||||
|
evaluate: true,
|
||||||
|
inline: true,
|
||||||
|
passes: 2,
|
||||||
|
reduce_vars: true,
|
||||||
|
sequences: true,
|
||||||
|
side_effects: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var c = "FAIL";
|
||||||
|
(function() {
|
||||||
|
function f(a) {
|
||||||
|
var b = function g(a) {
|
||||||
|
a && a();
|
||||||
|
}();
|
||||||
|
if (a) {
|
||||||
|
var d = c = "PASS";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f(1);
|
||||||
|
})();
|
||||||
|
console.log(c);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var c = "FAIL";
|
||||||
|
c = "PASS",
|
||||||
|
console.log(c);
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user