From: Alex Lam S.L Date: Fri, 30 Mar 2018 06:07:36 +0000 (+0900) Subject: handle modifications to `this` correctly (#3036) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=06b9894c1970da69376296f97e853a465587292e;p=UglifyJS.git handle modifications to `this` correctly (#3036) fixes #3032 --- diff --git a/lib/compress.js b/lib/compress.js index 03ed9e8a..52a23ee4 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1052,6 +1052,7 @@ merge(Compressor.prototype, { && (side_effects || node.expression.may_throw_on_access(compressor)) || node instanceof AST_SymbolRef && (symbol_in_lvalues(node) || side_effects && may_modify(node)) + || node instanceof AST_This && symbol_in_lvalues(node) || node instanceof AST_VarDef && node.value && (node.name.name in lvalues || side_effects && may_modify(node.name)) || (sym = is_lhs(node.left, node)) diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js index 886a7564..e97f1031 100644 --- a/test/compress/collapse_vars.js +++ b/test/compress/collapse_vars.js @@ -5303,3 +5303,27 @@ issue_2974: { } expect_stdout: "1" } + +issue_3032: { + options = { + collapse_vars: true, + pure_getters: true, + } + input: { + console.log({ + f: function() { + this.a = 42; + return [ this.a, !1 ]; + } + }.f()[0]); + } + expect: { + console.log({ + f: function() { + this.a = 42; + return [ this.a, !1 ]; + } + }.f()[0]); + } + expect_stdout: "42" +}