fix corner case in merge_vars (#4136)

fixes #4135
This commit is contained in:
Alex Lam S.L
2020-09-20 16:54:14 +01:00
committed by GitHub
parent 90410f9fc3
commit 8fa470c17c
2 changed files with 42 additions and 2 deletions

View File

@@ -4485,9 +4485,12 @@ merge(Compressor.prototype, {
var head = first.pop(); var head = first.pop();
var def = head.definition; var def = head.definition;
if (!(def.id in prev)) continue; if (!(def.id in prev)) continue;
var head_refs = references[def.id]; if (!references[def.id]) continue;
if (!head_refs) continue; var head_refs = {
start: references[def.id].start,
};
while (def.id in merged) def = merged[def.id]; while (def.id in merged) def = merged[def.id];
head_refs.end = references[def.id].end;
var skipped = []; var skipped = [];
do { do {
var tail = last.pop(); var tail = last.pop();

View File

@@ -2701,3 +2701,40 @@ issue_4130: {
"1", "1",
] ]
} }
issue_4135: {
options = {
evaluate: true,
inline: true,
merge_vars: true,
reduce_vars: true,
side_effects: true,
toplevel: true,
unused: true,
}
input: {
var a = 0, b = 0;
--b;
a++;
if (!a)
var c = function() {
var d = 0;
function f() {
d && d.p;
}
f();
this;
}(a++);
console.log(a, b, c);
}
expect: {
var a = 0;
0;
a++;
if (!a)
c = (a++, c = 0, void (c && c.p));
var c;
console.log(a, -1, c);
}
expect_stdout: "1 -1 undefined"
}