@@ -853,18 +853,21 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
return true;
|
||||
|
||||
function walk_prop(node) {
|
||||
if (node instanceof AST_Dot) {
|
||||
walk_prop(node.expression);
|
||||
} else if (node instanceof AST_Sub) {
|
||||
walk_prop(node.expression);
|
||||
node.property.walk(tw);
|
||||
} else if (node instanceof AST_SymbolRef) {
|
||||
var d = node.definition();
|
||||
push_ref(d, node);
|
||||
node.fixed = d.fixed;
|
||||
function walk_prop(lhs) {
|
||||
if (lhs instanceof AST_Dot) {
|
||||
walk_prop(lhs.expression);
|
||||
} else if (lhs instanceof AST_Sub) {
|
||||
walk_prop(lhs.expression);
|
||||
lhs.property.walk(tw);
|
||||
} else if (lhs instanceof AST_SymbolRef) {
|
||||
var d = lhs.definition();
|
||||
push_ref(d, lhs);
|
||||
if (d.fixed) {
|
||||
lhs.fixed = d.fixed;
|
||||
lhs.fixed.assigns = [ node ];
|
||||
}
|
||||
} else {
|
||||
node.walk(tw);
|
||||
lhs.walk(tw);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3212,3 +3212,30 @@ issue_4628: {
|
||||
}
|
||||
expect_stdout: "undefined"
|
||||
}
|
||||
|
||||
issue_4653: {
|
||||
options = {
|
||||
evaluate: true,
|
||||
merge_vars: true,
|
||||
reduce_vars: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
var a = 1, b;
|
||||
function f(c, d) {
|
||||
c || console.log(d);
|
||||
}
|
||||
f(a++ + (b = b), b |= console.log(a));
|
||||
}
|
||||
expect: {
|
||||
var b = 1;
|
||||
(function(c, d) {
|
||||
c || console.log(d);
|
||||
})(+b + (b = void 0), b |= console.log(2));
|
||||
}
|
||||
expect_stdout: [
|
||||
"2",
|
||||
"0",
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user