Skip to content

Commit

Permalink
fix corner case in if_return (#5675)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexlamsl committed Sep 22, 2022
1 parent 43ec350 commit 37d3e4f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
5 changes: 2 additions & 3 deletions lib/compress.js
Expand Up @@ -1828,12 +1828,11 @@ Compressor.prototype.compress = function(node) {
return wrap ? make_sequence(orig, [ make_node(AST_Number, orig, { value: 0 }), val ]) : val;
}

function merge_expression(base, target, scope) {
function merge_expression(base, target) {
var fixed_by_id = new Dictionary();
base.walk(new TreeWalker(function(node) {
if (!(node instanceof AST_SymbolRef)) return;
var def = node.definition();
if (scope && def.scope.resolve() !== scope) return;
var fixed = node.fixed;
if (!fixed || !fixed_by_id.has(def.id)) {
fixed_by_id.set(def.id, fixed);
Expand Down Expand Up @@ -3836,7 +3835,7 @@ Compressor.prototype.compress = function(node) {
case 2:
value = value.tail_node();
}
merge_expression(value, jump.value, scope);
merge_expression(value, jump.value);
}

function next_index(i) {
Expand Down
32 changes: 31 additions & 1 deletion test/compress/if_return.js
Expand Up @@ -1834,7 +1834,7 @@ switch_return_5: {
]
}

merged_references: {
merged_references_1: {
options = {
if_return: true,
reduce_vars: true,
Expand All @@ -1861,6 +1861,36 @@ merged_references: {
expect_stdout: "PASS"
}

merged_references_2: {
options = {
if_return: true,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
A = "PASS";
var a;
console.log(function(b) {
if (a = b)
return console && a;
a = FAIL;
return console && a;
}(A));
}
expect: {
A = "PASS";
var a;
console.log(function(b) {
if (a = b);
else
a = FAIL;
return console && a;
}(A));
}
expect_stdout: "PASS"
}

issue_5583: {
options = {
conditionals: true,
Expand Down

0 comments on commit 37d3e4f

Please sign in to comment.