@@ -3991,10 +3991,17 @@ merge(Compressor.prototype, {
|
|||||||
if (!call || call.TYPE != "Call") break;
|
if (!call || call.TYPE != "Call") break;
|
||||||
var fn = call.expression;
|
var fn = call.expression;
|
||||||
if (fn instanceof AST_SymbolRef) {
|
if (fn instanceof AST_SymbolRef) {
|
||||||
|
if (self.name && self.name.definition() === fn.definition()) break;
|
||||||
fn = fn.fixed_value();
|
fn = fn.fixed_value();
|
||||||
}
|
}
|
||||||
if (!(fn instanceof AST_Lambda)) break;
|
if (!(fn instanceof AST_Lambda)) break;
|
||||||
if (fn.uses_arguments) 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;
|
if (fn.contains_this()) break;
|
||||||
var j = fn.argnames.length;
|
var j = fn.argnames.length;
|
||||||
if (j > 0 && compressor.option("inline") < 2) break;
|
if (j > 0 && compressor.option("inline") < 2) break;
|
||||||
|
|||||||
@@ -4590,3 +4590,50 @@ substitude_use_strict: {
|
|||||||
"PASS",
|
"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