fix corner cases in merge_vars & with exports (#4762)

fixes #4761
This commit is contained in:
Alex Lam S.L
2021-03-11 01:16:16 +00:00
committed by GitHub
parent b4944a31a4
commit 862b1b77b5
4 changed files with 42 additions and 11 deletions

View File

@@ -5605,21 +5605,25 @@ merge(Compressor.prototype, {
}
function mark(sym, read) {
if (in_try) push();
var def = sym.definition(), ldef;
var def = sym.definition(), ldef, seg = segment;
if (in_try) {
push();
seg = segment;
pop();
}
if (def.id in references) {
var refs = references[def.id];
if (!refs) return;
if (refs.start.block !== segment.block) return references[def.id] = false;
if (refs.start.block !== seg.block) return references[def.id] = false;
refs.push(sym);
refs.end = segment;
refs.end = seg;
if (def.id in prev) {
last[prev[def.id]] = null;
} else if (!read) {
return;
}
} else if ((ldef = self.variables.get(def.name)) !== def) {
if (ldef && root === segment) references[ldef.id] = false;
if (ldef && root === seg) references[ldef.id] = false;
return references[def.id] = false;
} else if (compressor.exposed(def) || NO_MERGE[sym.name]) {
return references[def.id] = false;
@@ -5628,13 +5632,13 @@ merge(Compressor.prototype, {
refs.push(sym);
references[def.id] = refs;
if (!read) {
refs.start = segment;
refs.start = seg;
return first.push({
index: index++,
definition: def,
});
}
if (segment.block !== self) return references[def.id] = false;
if (seg.block !== self) return references[def.id] = false;
refs.start = root;
}
prev[def.id] = last.length;