From e49297e5eb7039246cc3a78019234826631eb623 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Thu, 14 Mar 2019 21:36:45 +0800 Subject: [PATCH] improve usability of `pure_funcs` (#3336) fixes #3325 --- lib/compress.js | 12 +++++++++--- test/compress/pure_funcs.js | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index 04adb8b2df..2a4f0df89f 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -106,10 +106,16 @@ function Compressor(options, false_by_default) { var pure_funcs = this.options["pure_funcs"]; if (typeof pure_funcs == "function") { this.pure_funcs = pure_funcs; - } else { - this.pure_funcs = pure_funcs ? function(node) { + } else if (typeof pure_funcs == "string") { + this.pure_funcs = function(node) { + return pure_funcs !== node.expression.print_to_string(); + }; + } else if (Array.isArray(pure_funcs)) { + this.pure_funcs = function(node) { return pure_funcs.indexOf(node.expression.print_to_string()) < 0; - } : return_true; + }; + } else { + this.pure_funcs = return_true; } var top_retain = this.options["top_retain"]; if (top_retain instanceof RegExp) { diff --git a/test/compress/pure_funcs.js b/test/compress/pure_funcs.js index 56c36dd77d..48140dd6f7 100644 --- a/test/compress/pure_funcs.js +++ b/test/compress/pure_funcs.js @@ -642,3 +642,41 @@ issue_3065_4: { })(); } } + +issue_3325_1: { + options = { + pure_funcs: "cb", + side_effects: true, + } + input: { + function cb() { + console.log("PASS"); + } + cb(); + } + expect: { + function cb() { + console.log("PASS"); + } + } +} + +issue_3325_2: { + options = { + pure_funcs: "xxxcbxxx", + side_effects: true, + } + input: { + function cb() { + console.log("PASS"); + } + cb(); + } + expect: { + function cb() { + console.log("PASS"); + } + cb(); + } + expect_stdout: "PASS" +}