@@ -4457,13 +4457,18 @@ merge(Compressor.prototype, {
|
|||||||
var sym = def.name.definition();
|
var sym = def.name.definition();
|
||||||
if (!drop_vars || sym.id in in_use_ids) {
|
if (!drop_vars || sym.id in in_use_ids) {
|
||||||
if (def.value && indexOf_assign(sym, def) < 0) {
|
if (def.value && indexOf_assign(sym, def) < 0) {
|
||||||
|
var write_only = def.value.write_only;
|
||||||
var value = def.value.drop_side_effect_free(compressor);
|
var value = def.value.drop_side_effect_free(compressor);
|
||||||
if (def.value !== value) def.value = value && make_sequence(def.value, [
|
if (def.value !== value) {
|
||||||
value,
|
def.value = value && make_sequence(def.value, [
|
||||||
make_node(AST_Number, def.value, {
|
value,
|
||||||
value: 0
|
make_node(AST_Number, def.value, {
|
||||||
}),
|
value: 0
|
||||||
]);
|
}),
|
||||||
|
]);
|
||||||
|
} else if (def.value.write_only !== write_only) {
|
||||||
|
def.value.write_only = write_only;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var old_def, var_defs = var_defs_by_id.get(sym.id);
|
var old_def, var_defs = var_defs_by_id.get(sym.id);
|
||||||
if (!def.value) {
|
if (!def.value) {
|
||||||
|
|||||||
@@ -2813,3 +2813,38 @@ issue_4017: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "undefined"
|
expect_stdout: "undefined"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4025: {
|
||||||
|
options = {
|
||||||
|
collapse_vars: true,
|
||||||
|
evaluate: true,
|
||||||
|
passes: 2,
|
||||||
|
reduce_vars: true,
|
||||||
|
toplevel: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a = 0, b = 0, c = 0, d = a++;
|
||||||
|
try {
|
||||||
|
var e = console.log(c), f = b;
|
||||||
|
} finally {
|
||||||
|
var d = b = 1, d = c + 1;
|
||||||
|
c = 0;
|
||||||
|
}
|
||||||
|
console.log(a, b, d);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var d, c = 0;
|
||||||
|
try {
|
||||||
|
console.log(c);
|
||||||
|
} finally {
|
||||||
|
d = c + 1;
|
||||||
|
c = 0;
|
||||||
|
}
|
||||||
|
console.log(1, 1, d);
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"0",
|
||||||
|
"1 1 1",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user