@@ -1128,6 +1128,8 @@ merge(Compressor.prototype, {
|
|||||||
if (!stop_if_hit && in_conditional(node, parent)) {
|
if (!stop_if_hit && in_conditional(node, parent)) {
|
||||||
stop_if_hit = parent;
|
stop_if_hit = parent;
|
||||||
}
|
}
|
||||||
|
// Skip transient nodes caused by single-use variable replacement
|
||||||
|
if (node.single_use && parent instanceof AST_VarDef && parent.value === node) return node;
|
||||||
// Replace variable with assignment when found
|
// Replace variable with assignment when found
|
||||||
var hit_rhs;
|
var hit_rhs;
|
||||||
if (can_replace
|
if (can_replace
|
||||||
@@ -3737,9 +3739,7 @@ merge(Compressor.prototype, {
|
|||||||
def.value = null;
|
def.value = null;
|
||||||
head.push(def);
|
head.push(def);
|
||||||
} else {
|
} else {
|
||||||
var value = def.value
|
var value = def.value && def.value.drop_side_effect_free(compressor);
|
||||||
&& !def.value.single_use
|
|
||||||
&& def.value.drop_side_effect_free(compressor);
|
|
||||||
if (value) {
|
if (value) {
|
||||||
AST_Node.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]", template(def.name));
|
AST_Node.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]", template(def.name));
|
||||||
side_effects.push(value);
|
side_effects.push(value);
|
||||||
|
|||||||
@@ -6258,3 +6258,41 @@ cond_sequence_return: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "2"
|
expect_stdout: "2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_3520: {
|
||||||
|
options = {
|
||||||
|
collapse_vars: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a = 0;
|
||||||
|
var b = function(c) {
|
||||||
|
for (var i = 2; --i >= 0;) {
|
||||||
|
(function f() {
|
||||||
|
c = 0;
|
||||||
|
var i = void 0;
|
||||||
|
var f = f && f[i];
|
||||||
|
})();
|
||||||
|
a += b;
|
||||||
|
c && b++;
|
||||||
|
}
|
||||||
|
}(b = 1);
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a = 0;
|
||||||
|
var b = function(c) {
|
||||||
|
for (var i = 2; --i >= 0;) {
|
||||||
|
(function() {
|
||||||
|
c = 0;
|
||||||
|
var f = f && f[void 0];
|
||||||
|
})();
|
||||||
|
a += b;
|
||||||
|
c && b++;
|
||||||
|
}
|
||||||
|
}(b = 1);
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
expect_stdout: "2"
|
||||||
|
}
|
||||||
|
|||||||
@@ -2121,7 +2121,8 @@ issue_3515_1: {
|
|||||||
expect: {
|
expect: {
|
||||||
var c = 0;
|
var c = 0;
|
||||||
(function() {
|
(function() {
|
||||||
for (var key20 in !(this[c++] = 0));
|
this[c++] = 0;
|
||||||
|
for (var key20 in !0);
|
||||||
})();
|
})();
|
||||||
console.log(c);
|
console.log(c);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user