diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2020-09-25 15:00:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-25 22:00:20 +0800 |
commit | 6e105c5ca6c95f6159d91f74df92020f33ae2f99 (patch) | |
tree | cd4e6ecffe3410808b7c419a8eadbda34d46cc46 | |
parent | af35cd32f28dfc3f79380d8f1b8294fc550d07e2 (diff) | |
download | tracifyjs-6e105c5ca6c95f6159d91f74df92020f33ae2f99.tar.gz tracifyjs-6e105c5ca6c95f6159d91f74df92020f33ae2f99.zip |
enhance `merge_vars` (#4152)
-rw-r--r-- | lib/compress.js | 4 | ||||
-rw-r--r-- | test/compress/merge_vars.js | 22 |
2 files changed, 23 insertions, 3 deletions
diff --git a/lib/compress.js b/lib/compress.js index 517f29fd..3f7eee68 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4538,9 +4538,7 @@ merge(Compressor.prototype, { if (def.id in references) { var refs = references[def.id]; if (!refs) return; - if (write ? refs.start !== segment : refs.start.block !== segment.block) { - return references[def.id] = false; - } + if (refs.start.block !== segment.block) return references[def.id] = false; refs.push(sym); refs.end = segment; if (def.id in prev) { diff --git a/test/compress/merge_vars.js b/test/compress/merge_vars.js index b5148669..b86b0e99 100644 --- a/test/compress/merge_vars.js +++ b/test/compress/merge_vars.js @@ -2800,3 +2800,25 @@ lambda_reuse: { "string", ] } + +conditional_write: { + options = { + merge_vars: true, + toplevel: true, + } + input: { + var a = "FAIL", b; + if (console) + a = "PASS"; + b = [a, 42].join(); + console.log(b); + } + expect: { + var b = "FAIL", b; + if (console) + b = "PASS"; + b = [b, 42].join(); + console.log(b); + } + expect_stdout: "PASS,42" +} |