diff --git a/lib/compress.js b/lib/compress.js index d1c21c78..4f17ce33 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -3028,9 +3028,11 @@ merge(Compressor.prototype, { } else if (node instanceof AST_Unary && node.write_only) { sym = node.expression; } - while (sym instanceof AST_PropAccess && !sym.expression.may_throw_on_access(compressor)) { - if (sym instanceof AST_Sub) props.unshift(sym.property); - sym = sym.expression; + if (/strict/.test(compressor.option("pure_getters"))) { + while (sym instanceof AST_PropAccess && !sym.expression.may_throw_on_access(compressor)) { + if (sym instanceof AST_Sub) props.unshift(sym.property); + sym = sym.expression; + } } return sym; }; diff --git a/test/compress/pure_getters.js b/test/compress/pure_getters.js index 4e9ae4f4..fe04d176 100644 --- a/test/compress/pure_getters.js +++ b/test/compress/pure_getters.js @@ -721,3 +721,30 @@ issue_2838: { } expect_stdout: "PASS" } + +issue_2938: { + options = { + pure_getters: true, + toplevel: true, + unused: true, + } + input: { + var Parser = function Parser() {}; + var p = Parser.prototype; + p.initialContext = function initialContext() { + console.log("PASS"); + }; + p.braceIsBlock = function() {}; + (new Parser).initialContext(); + } + expect: { + var Parser = function() {}; + var p = Parser.prototype; + p.initialContext = function() { + console.log("PASS"); + }; + p.braceIsBlock = function() {}; + (new Parser).initialContext(); + } + expect_stdout: "PASS" +}