aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/compress.js1
-rw-r--r--test/compress/collapse_vars.js34
2 files changed, 34 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 993092a0..f9cd7a41 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -1040,7 +1040,6 @@ merge(Compressor.prototype, {
|| node instanceof AST_PropAccess
&& (side_effects || node.expression.may_throw_on_access(compressor))
|| node instanceof AST_SymbolRef
- && !(parent instanceof AST_Assign && parent.operator == "=" && parent.left === node)
&& (lvalues[node.name] || side_effects && may_modify(node))
|| node instanceof AST_VarDef && node.value
&& (node.name.name in lvalues || side_effects && may_modify(node.name))
diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js
index ad09edc3..4191de85 100644
--- a/test/compress/collapse_vars.js
+++ b/test/compress/collapse_vars.js
@@ -4433,3 +4433,37 @@ issue_2873_2: {
}
expect_stdout: "0 1"
}
+
+issue_2878: {
+ options = {
+ collapse_vars: true,
+ sequences: true,
+ }
+ input: {
+ var c = 0;
+ (function (a, b) {
+ function f2() {
+ if (a) c++;
+ }
+ b = f2();
+ a = 1;
+ b && b.b;
+ f2();
+ })();
+ console.log(c);
+ }
+ expect: {
+ var c = 0;
+ (function (a, b) {
+ function f2() {
+ if (a) c++;
+ }
+ b = f2(),
+ a = 1,
+ b && b.b,
+ f2();
+ })(),
+ console.log(c);
+ }
+ expect_stdout: "1"
+}