@@ -3991,10 +3991,17 @@ merge(Compressor.prototype, {
|
||||
if (!call || call.TYPE != "Call") break;
|
||||
var fn = call.expression;
|
||||
if (fn instanceof AST_SymbolRef) {
|
||||
if (self.name && self.name.definition() === fn.definition()) break;
|
||||
fn = fn.fixed_value();
|
||||
}
|
||||
if (!(fn instanceof AST_Lambda)) break;
|
||||
if (fn.uses_arguments) break;
|
||||
if (fn === call.expression) {
|
||||
if (fn.parent_scope !== self) break;
|
||||
if (!all(fn.enclosed, function(def) {
|
||||
return def.scope !== self;
|
||||
})) break;
|
||||
}
|
||||
if (fn.contains_this()) break;
|
||||
var j = fn.argnames.length;
|
||||
if (j > 0 && compressor.option("inline") < 2) break;
|
||||
|
||||
@@ -4590,3 +4590,50 @@ substitude_use_strict: {
|
||||
"PASS",
|
||||
]
|
||||
}
|
||||
|
||||
issue_3833: {
|
||||
options = {
|
||||
inline: true,
|
||||
keep_fargs: "strict",
|
||||
reduce_vars: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
function f(a) {
|
||||
return function() {
|
||||
while (a);
|
||||
console.log("PASS");
|
||||
}();
|
||||
}
|
||||
f();
|
||||
}
|
||||
expect: {
|
||||
(function() {
|
||||
while (a);
|
||||
console.log("PASS");
|
||||
})();
|
||||
var a;
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
issue_3835: {
|
||||
options = {
|
||||
inline: true,
|
||||
reduce_vars: true,
|
||||
}
|
||||
input: {
|
||||
(function f() {
|
||||
return function() {
|
||||
return f();
|
||||
}();
|
||||
})();
|
||||
}
|
||||
expect: {
|
||||
(function f() {
|
||||
return f();
|
||||
})();
|
||||
}
|
||||
expect_stdout: true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user