node = parent;
parent = compressor.parent(level++);
if (parent instanceof AST_Assign) {
- var found = false;
+ if (parent.left instanceof AST_SymbolRef && parent.left.definition() === def) {
+ if (in_try(level, parent)) break;
+ return strip_assignment(def);
+ }
if (parent.left.match_symbol(function(node) {
if (node instanceof AST_PropAccess) return true;
- if (!found && node instanceof AST_SymbolRef && node.definition() === def) {
- if (in_try(level, parent)) return true;
- found = true;
- }
})) break;
- if (!found) continue;
- return strip_assignment(def);
+ continue;
}
if (parent instanceof AST_Exit) {
if (!local) break;
}
expect: {
var a;
- [ a ] = [ "PASS", "FAIL" ];
+ [ a ] = a = [ "PASS", "FAIL" ];
console.log(a);
}
expect_stdout: "PASS"
expect_stdout: "PASS"
node_version: ">=6"
}
+
+issue_5153_array_assign: {
+ options = {
+ dead_code: true,
+ }
+ input: {
+ var a = function*() {
+ yield b;
+ }(), b;
+ [ b ] = b = a;
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect: {
+ var a = function*() {
+ yield b;
+ }(), b;
+ [ b ] = b = a;
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect_stdout: "PASS"
+ node_version: ">=6"
+}
+
+issue_5153_array_var: {
+ options = {
+ dead_code: true,
+ }
+ input: {
+ var a = function*() {
+ yield b;
+ }(), [ b ] = b = a;
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect: {
+ var a = function*() {
+ yield b;
+ }(), [ b ] = b = a;
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect_stdout: "PASS"
+ node_version: ">=6"
+}
+
+issue_5153_object_assign: {
+ options = {
+ dead_code: true,
+ }
+ input: {
+ var a = {
+ get p() {
+ return b;
+ },
+ }, b;
+ ({
+ p: b
+ } = b = a);
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect: {
+ var a = {
+ get p() {
+ return b;
+ },
+ }, b;
+ ({
+ p: b
+ } = b = a);
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect_stdout: "PASS"
+ node_version: ">=6"
+}
+
+issue_5153_object_var: {
+ options = {
+ dead_code: true,
+ }
+ input: {
+ var a = {
+ get p() {
+ return b;
+ },
+ }, {
+ p: b
+ } = b = a;
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect: {
+ var a = {
+ get p() {
+ return b;
+ },
+ }, {
+ p: b
+ } = b = a;
+ console.log(a === b ? "PASS" : "FAIL");
+ }
+ expect_stdout: "PASS"
+ node_version: ">=6"
+}