aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2018-01-15 16:42:15 +0800
committerGitHub <noreply@github.com>2018-01-15 16:42:15 +0800
commitcbbe6fad60dd073c63575f591d631efa94bbceaf (patch)
tree5b65ad79deb4b370415331acc7ffabe2e692ef9f
parentf96929c0313529dbf323ba20f7dc1be0f0e4e3ba (diff)
downloadtracifyjs-cbbe6fad60dd073c63575f591d631efa94bbceaf.tar.gz
tracifyjs-cbbe6fad60dd073c63575f591d631efa94bbceaf.zip
avoid double counting within single-use functions (#2785)
fixes #2783
-rw-r--r--lib/compress.js1
-rw-r--r--test/compress/functions.js38
2 files changed, 39 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 321a1340..7e3503fe 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -5022,6 +5022,7 @@ merge(Compressor.prototype, {
}
if (single_use && fixed) {
if (fixed instanceof AST_Defun) {
+ fixed._squeezed = true;
fixed = make_node(AST_Function, fixed, fixed);
}
var value;
diff --git a/test/compress/functions.js b/test/compress/functions.js
index 222aa0ca..2d55dd52 100644
--- a/test/compress/functions.js
+++ b/test/compress/functions.js
@@ -1951,3 +1951,41 @@ issue_2737_2: {
}
expect_stdout: "PASS"
}
+
+issue_2783: {
+ options = {
+ collapse_vars: true,
+ conditionals: true,
+ if_return: true,
+ inline: true,
+ reduce_vars: true,
+ unused: true,
+ }
+ input: {
+ (function() {
+ return g;
+ function f(a) {
+ var b = a.b;
+ if (b) return b;
+ return a;
+ }
+ function g(o, i) {
+ while (i--) {
+ console.log(f(o));
+ }
+ }
+ })()({ b: "PASS" }, 1);
+ }
+ expect: {
+ (function() {
+ return function(o,i) {
+ while (i--) console.log(f(o));
+ };
+ function f(a) {
+ var b = a.b;
+ return b || a;
+ }
+ })()({ b: "PASS" },1);
+ }
+ expect_stdout: "PASS"
+}