aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2019-05-21 12:55:34 +0800
committerGitHub <noreply@github.com>2019-05-21 12:55:34 +0800
commitb9053c7a25ff1ad86345e0196437671609756afa (patch)
treec47811ee41e1654ce5648e5e370863e9e5dd735d
parentd357a7aabc7512e53ff135c917b05997e5158a2d (diff)
downloadtracifyjs-b9053c7a25ff1ad86345e0196437671609756afa.tar.gz
tracifyjs-b9053c7a25ff1ad86345e0196437671609756afa.zip
fix corner case in `keep_fargs` (#3424)
fixes #3423
-rw-r--r--lib/compress.js2
-rw-r--r--test/compress/keep_fargs.js38
2 files changed, 39 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js
index e1f0105c..e99ce508 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -108,7 +108,7 @@ function Compressor(options, false_by_default) {
this.drop_fargs = keep_fargs == "strict" ? function(lambda, parent) {
if (lambda.length_read) return false;
var name = lambda.name;
- if (!name) return parent && parent.TYPE == "Call";
+ if (!name) return parent && parent.TYPE == "Call" && parent.expression === lambda;
if (name.fixed_value() !== lambda) return false;
var def = name.definition();
if (def.direct_access) return false;
diff --git a/test/compress/keep_fargs.js b/test/compress/keep_fargs.js
index 558b10bb..74b801d3 100644
--- a/test/compress/keep_fargs.js
+++ b/test/compress/keep_fargs.js
@@ -1117,3 +1117,41 @@ issue_3420_3: {
}
expect_stdout: "4"
}
+
+issue_3423_1: {
+ options = {
+ keep_fargs: "strict",
+ unused: true,
+ }
+ input: {
+ function f(g) {
+ console.log(g.length);
+ }
+ f(function(a) {});
+ }
+ expect: {
+ function f(g) {
+ console.log(g.length);
+ }
+ f(function(a) {});
+ }
+ expect_stdout: "1"
+}
+
+issue_3423_2: {
+ options = {
+ keep_fargs: "strict",
+ unused: true,
+ }
+ input: {
+ new function(a) {
+ console.log(this.constructor.length);
+ }();
+ }
+ expect: {
+ new function(a) {
+ console.log(this.constructor.length);
+ }();
+ }
+ expect_stdout: "1"
+}