Skip to content

Commit

Permalink
patch up #1543 for harmony
Browse files Browse the repository at this point in the history
fixes #1537
  • Loading branch information
kzc authored and alexlamsl committed Mar 5, 2017
1 parent 49d9ac1 commit 33a26d4
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/compress.js
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,7 @@ merge(Compressor.prototype, {
if (var_decl.value.is_constant()) {
var ctt = new TreeTransformer(function(node) {
if (node === ref
&& !ctt.find_parent(AST_Destructuring)
&& !ctt.find_parent(AST_ForIn)) {
return replace_var(node, ctt.parent(), true);
}
Expand Down Expand Up @@ -581,6 +582,7 @@ merge(Compressor.prototype, {
if (unwind) return node;
var parent = tt.parent();
if (node instanceof AST_Lambda
|| node instanceof AST_Destructuring
|| node instanceof AST_Try
|| node instanceof AST_With
|| node instanceof AST_Case
Expand Down
78 changes: 78 additions & 0 deletions test/compress/collapse_vars.js
Original file line number Diff line number Diff line change
Expand Up @@ -1343,3 +1343,81 @@ issue_1537_for_of: {
for (k of {prop: 'val'});
}
}

issue_1537_destructuring_1: {
options = {
collapse_vars: true,
}
input: {
var x = 1, y = 2;
[x] = [y];
}
expect: {
var x = 1;
[x] = [2];
}
}

issue_1537_destructuring_2: {
options = {
collapse_vars: true,
}
input: {
var x = foo();
[x] = [1];
}
expect: {
var x = foo();
[x] = [1];
}
}

issue_1537_destructuring_3: {
options = {
collapse_vars: true,
}
input: {
var x = Math.random();
({p: x = 9} = {v: 1});
}
expect: {
var x = Math.random();
({p: x = 9} = {v: 1});
}
}

issue_1537_destructuring_for_in: {
options = {
collapse_vars: true,
}
input: {
var x = 1, y = 2;
(function() {
for ([[x], y] in a);
})();
}
expect: {
var x = 1, y = 2;
(function() {
for ([[x], y] in a);
})();
}
}

issue_1537_destructuring_for_of: {
options = {
collapse_vars: true,
}
input: {
var x = 1, y = 2;
(function() {
for ([[x], y] of a);
})();
}
expect: {
var x = 1, y = 2;
(function() {
for ([[x], y] of a);
})();
}
}

0 comments on commit 33a26d4

Please sign in to comment.