From ec7cabed3bf0237296c2e297eae1a039852c4af8 Mon Sep 17 00:00:00 2001 From: alexlamsl Date: Wed, 31 Jan 2018 18:10:35 +0800 Subject: [PATCH] relax `collapse_vars` on `AST_Exit` --- lib/compress.js | 1 - test/compress/collapse_vars.js | 55 ++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/lib/compress.js b/lib/compress.js index d0ef5f5d..db6ee8be 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1044,7 +1044,6 @@ merge(Compressor.prototype, { // but are otherwise not safe to scan into or beyond them. var sym; if (node instanceof AST_Call - || node instanceof AST_Exit || node instanceof AST_PropAccess && (side_effects || node.expression.may_throw_on_access(compressor)) || node instanceof AST_SymbolRef diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js index 4172b33b..046daf9f 100644 --- a/test/compress/collapse_vars.js +++ b/test/compress/collapse_vars.js @@ -4107,3 +4107,58 @@ unsafe_builtin: { } expect_stdout: "1 4" } + +return_1: { + options = { + collapse_vars: true, + unused: true, + } + input: { + var log = console.log; + function f(b, c) { + var a = c; + if (b) return b; + log(a); + } + f(false, 1); + f(true, 2); + } + expect: { + var log = console.log; + function f(b, c) { + if (b) return b; + log(c); + } + f(false, 1); + f(true, 2); + } + expect_stdout: "1" +} + +return_2: { + options = { + collapse_vars: true, + unused: true, + } + input: { + var log = console.log; + function f(b, c) { + var a = b <<= c; + if (b) return b; + log(a); + } + f(false, 1); + f(true, 2); + } + expect: { + var log = console.log; + function f(b, c) { + var a = b <<= c; + if (b) return b; + log(a); + } + f(false, 1); + f(true, 2); + } + expect_stdout: "0" +}