aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-04-07 23:31:15 +0100
committerGitHub <noreply@github.com>2021-04-08 06:31:15 +0800
commitebe4e1ad28009bdf5b2e936ed8d01d7d20704cc4 (patch)
tree56f31e922c7ca460283a73ab5aa95ce1e6dd869b
parenta37ca558dd8d7f5243e061e216287793b9108911 (diff)
downloadtracifyjs-ebe4e1ad28009bdf5b2e936ed8d01d7d20704cc4.tar.gz
tracifyjs-ebe4e1ad28009bdf5b2e936ed8d01d7d20704cc4.zip
fix corner case in `unused` (#4850)
fixes #4849
-rw-r--r--lib/compress.js1
-rw-r--r--test/compress/exponentiation.js4
-rw-r--r--test/compress/spreads.js23
3 files changed, 26 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 5a9c8b78..437baabf 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -9393,6 +9393,7 @@ merge(Compressor.prototype, {
var seq = lift_sequence_in_expression(self, compressor);
if (seq !== self) return seq.optimize(compressor);
}
+ if (compressor.option("unused")) drop_unused_call_args(self, compressor);
if (compressor.option("unsafe")) {
var exp = self.expression;
if (is_undeclared_ref(exp)) {
diff --git a/test/compress/exponentiation.js b/test/compress/exponentiation.js
index 1a678f52..e945e13e 100644
--- a/test/compress/exponentiation.js
+++ b/test/compress/exponentiation.js
@@ -99,8 +99,8 @@ issue_4664: {
expect: {
(function f() {
new function(a) {
- console.log(typeof f, 2 ** 30, typeof this);
- }(0, A = 0);
+ console.log(typeof f, 1073741824, typeof this);
+ }(A = 0);
})();
}
expect_stdout: "function 1073741824 object"
diff --git a/test/compress/spreads.js b/test/compress/spreads.js
index 02bb3f0e..4e5d0d98 100644
--- a/test/compress/spreads.js
+++ b/test/compress/spreads.js
@@ -1045,3 +1045,26 @@ issue_4614: {
expect_stdout: true
node_version: ">=6"
}
+
+issue_4849: {
+ options = {
+ reduce_vars: true,
+ unused: true,
+ }
+ input: {
+ while (function() {
+ while (!console);
+ }(new function(a) {
+ console.log(typeof { ...a });
+ }(function() {})));
+ }
+ expect: {
+ while (function() {
+ while (!console);
+ }(function(a) {
+ console.log(typeof { ...function() {} });
+ }()));
+ }
+ expect_stdout: "object"
+ node_version: ">=8"
+}