aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2020-11-17 06:43:04 +0000
committerGitHub <noreply@github.com>2020-11-17 14:43:04 +0800
commit2a612fd472b4d26fee4342fb57fe9ec54ab124cb (patch)
treeb68b3debf36fc688407dc4fc9fa4b64e1ef8998f
parentb9798a01a83269a6299d1f1e28d1e8f6d51b5726 (diff)
downloadtracifyjs-2a612fd472b4d26fee4342fb57fe9ec54ab124cb.tar.gz
tracifyjs-2a612fd472b4d26fee4342fb57fe9ec54ab124cb.zip
fix corner case in `reduce_vars` (#4283)
fixes #4282
-rw-r--r--lib/compress.js6
-rw-r--r--test/compress/destructured.js26
2 files changed, 30 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js
index a16c9a69..b8725b32 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -616,7 +616,11 @@ merge(Compressor.prototype, {
if (node instanceof AST_DestructuredObject) {
var save = fixed;
node.properties.forEach(function(node) {
- if (node.key instanceof AST_Node) node.key.walk(tw);
+ if (node.key instanceof AST_Node) {
+ push(tw);
+ node.key.walk(tw);
+ pop(tw);
+ }
fixed = function() {
var key = node.key;
var type = AST_Sub;
diff --git a/test/compress/destructured.js b/test/compress/destructured.js
index 169bfb7d..65429b92 100644
--- a/test/compress/destructured.js
+++ b/test/compress/destructured.js
@@ -541,7 +541,7 @@ funarg_reduce_vars_3: {
(function({
[a++]: b
}) {})(0);
- console.log(1);
+ console.log(a);
}
expect_stdout: "1"
node_version: ">=6"
@@ -1317,3 +1317,27 @@ issue_4280: {
expect_stdout: "undefined"
node_version: ">=6"
}
+
+issue_4282: {
+ options = {
+ evaluate: true,
+ reduce_vars: true,
+ unused: true,
+ }
+ input: {
+ (function(a) {
+ ({
+ [a = "bar"]: 0[console.log(a)],
+ } = 0);
+ })("foo");
+ }
+ expect: {
+ (function(a) {
+ ({
+ [a = "bar"]: 0[console.log(a)],
+ } = 0);
+ })("foo");
+ }
+ expect_stdout: true
+ node_version: ">=6"
+}