@@ -5032,7 +5032,7 @@ merge(Compressor.prototype, {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
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 && !(node instanceof AST_Let)) {
|
||||||
if (var_defs.length > 1) {
|
if (var_defs.length > 1) {
|
||||||
AST_Node.info("Dropping declaration of variable {name} [{file}:{line},{col}]", template(def.name));
|
AST_Node.info("Dropping declaration of variable {name} [{file}:{line},{col}]", template(def.name));
|
||||||
remove(var_defs, def);
|
remove(var_defs, def);
|
||||||
@@ -5071,13 +5071,18 @@ merge(Compressor.prototype, {
|
|||||||
duplicated++;
|
duplicated++;
|
||||||
}
|
}
|
||||||
if (side_effects.length > 0) {
|
if (side_effects.length > 0) {
|
||||||
if (tail.length > 0) {
|
if (tail.length == 0) {
|
||||||
side_effects.push(def.value);
|
|
||||||
def.value = make_sequence(def.value, side_effects);
|
|
||||||
} else {
|
|
||||||
body.push(make_node(AST_SimpleStatement, node, {
|
body.push(make_node(AST_SimpleStatement, node, {
|
||||||
body: make_sequence(node, side_effects)
|
body: make_sequence(node, side_effects)
|
||||||
}));
|
}));
|
||||||
|
} else if (def.value) {
|
||||||
|
side_effects.push(def.value);
|
||||||
|
def.value = make_sequence(def.value, side_effects);
|
||||||
|
} else {
|
||||||
|
def.value = make_node(AST_UnaryPrefix, def, {
|
||||||
|
operator: "void",
|
||||||
|
expression: make_sequence(def, side_effects)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
side_effects = [];
|
side_effects = [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1006,3 +1006,61 @@ issue_4274_2: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=4"
|
node_version: ">=4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4276_1: {
|
||||||
|
options = {
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
"use strict";
|
||||||
|
try {
|
||||||
|
let a = b, b;
|
||||||
|
console.log("FAIL");
|
||||||
|
} catch (e) {
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
"use strict";
|
||||||
|
try {
|
||||||
|
let a = b, b;
|
||||||
|
console.log("FAIL");
|
||||||
|
} catch (e) {
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=4"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4276_2: {
|
||||||
|
options = {
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
"use strict";
|
||||||
|
try {
|
||||||
|
let a = f(), b;
|
||||||
|
console.log("FAIL");
|
||||||
|
function f() {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
"use strict";
|
||||||
|
try {
|
||||||
|
let a = f(), b;
|
||||||
|
console.log("FAIL");
|
||||||
|
function f() {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=4"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user