From: Alex Lam S.L Date: Sun, 10 May 2020 17:07:05 +0000 (+0100) Subject: retain `@__PURE__` call when return value is used (#3874) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=7e0ad232b079202024ea845a2076ee78e1e0dbd7;p=UglifyJS.git retain `@__PURE__` call when return value is used (#3874) --- diff --git a/lib/compress.js b/lib/compress.js index 5509137b..6a444e92 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -3499,6 +3499,7 @@ merge(Compressor.prototype, { if (fn instanceof AST_Lambda) { if (fn.evaluating) return this; if (fn.name && fn.name.definition().recursive_refs > 0) return this; + if (this.is_expr_pure(compressor)) return this; var stat = fn.first_statement(); if (!(stat instanceof AST_Return)) return this; var args = eval_args(this.args); diff --git a/test/compress/pure_funcs.js b/test/compress/pure_funcs.js index 15ddf095..d65399f1 100644 --- a/test/compress/pure_funcs.js +++ b/test/compress/pure_funcs.js @@ -782,3 +782,28 @@ inline_pure_call_3: { "undefined", ] } + +inline_pure_call_4: { + options = { + evaluate: true, + reduce_vars: true, + toplevel: true, + unused: true, + } + input: { + var a = /*@__PURE__*/ function() { + return console.log("PASS"), 42; + }(); + console.log(a); + } + expect: { + var a = function() { + return console.log("PASS"), 42; + }(); + console.log(a); + } + expect_stdout: [ + "PASS", + "42", + ] +}