@@ -9601,7 +9601,7 @@ merge(Compressor.prototype, {
|
|||||||
if (can_substitute_directly()) {
|
if (can_substitute_directly()) {
|
||||||
var args = self.args.slice();
|
var args = self.args.slice();
|
||||||
var refs = [];
|
var refs = [];
|
||||||
args.push(value.clone(true).transform(new TreeTransformer(function(node) {
|
var retValue = value.clone(true).transform(new TreeTransformer(function(node) {
|
||||||
if (node instanceof AST_SymbolRef) {
|
if (node instanceof AST_SymbolRef) {
|
||||||
var def = node.definition();
|
var def = node.definition();
|
||||||
if (fn.variables.get(node.name) !== def) {
|
if (fn.variables.get(node.name) !== def) {
|
||||||
@@ -9615,12 +9615,20 @@ merge(Compressor.prototype, {
|
|||||||
var parent = this.parent();
|
var parent = this.parent();
|
||||||
return parent ? maintain_this_binding(compressor, parent, node, arg) : arg;
|
return parent ? maintain_this_binding(compressor, parent, node, arg) : arg;
|
||||||
}
|
}
|
||||||
})));
|
}));
|
||||||
var save_inlined = fn.inlined;
|
var save_inlined = fn.inlined;
|
||||||
if (exp !== fn) fn.inlined = true;
|
if (exp !== fn) fn.inlined = true;
|
||||||
var node = make_sequence(self, args.filter(function(arg) {
|
var exprs = [];
|
||||||
return arg;
|
args.forEach(function(arg) {
|
||||||
})).optimize(compressor);
|
if (!arg) return;
|
||||||
|
arg = arg.clone(true);
|
||||||
|
arg.walk(new TreeWalker(function(node) {
|
||||||
|
if (node instanceof AST_SymbolRef) refs.push(node);
|
||||||
|
}));
|
||||||
|
exprs.push(arg);
|
||||||
|
}, []);
|
||||||
|
exprs.push(retValue);
|
||||||
|
var node = make_sequence(self, exprs).optimize(compressor);
|
||||||
fn.inlined = save_inlined;
|
fn.inlined = save_inlined;
|
||||||
node = maintain_this_binding(compressor, parent, current, node);
|
node = maintain_this_binding(compressor, parent, current, node);
|
||||||
if (replacing || best_of_expression(node, self) === node) {
|
if (replacing || best_of_expression(node, self) === node) {
|
||||||
|
|||||||
@@ -6655,3 +6655,49 @@ issue_5140: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "42"
|
expect_stdout: "42"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5173_1: {
|
||||||
|
options = {
|
||||||
|
conditionals: true,
|
||||||
|
inline: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
|
toplevel: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
function f(a, b) {
|
||||||
|
console.log(b);
|
||||||
|
}
|
||||||
|
f([ A = 42, [] + "" || (A = f) ]);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
function f(a, b) {
|
||||||
|
console.log(b);
|
||||||
|
}
|
||||||
|
f([ A = 42, [] + "" || (A = f) ]);
|
||||||
|
}
|
||||||
|
expect_stdout: "undefined"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_5173_2: {
|
||||||
|
options = {
|
||||||
|
conditionals: true,
|
||||||
|
inline: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
toplevel: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
function f(a, b) {
|
||||||
|
console.log(b);
|
||||||
|
}
|
||||||
|
f([ A = 42, [] + "" || (A = f) ]);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
function f(a, b) {
|
||||||
|
console.log(b);
|
||||||
|
}
|
||||||
|
f(A = [] + "" ? 42 : f);
|
||||||
|
}
|
||||||
|
expect_stdout: "undefined"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user