From 842ac27efbc8f81b3bc4140a396957d6cde89d9c Mon Sep 17 00:00:00 2001 From: kzc Date: Sun, 17 Jul 2016 12:59:38 -0400 Subject: [PATCH] [ES6] Get compress and global_defs working for AST_Class --- lib/compress.js | 6 +++ lib/transform.js | 6 +++ test/compress/issue-1212.js | 76 +++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 test/compress/issue-1212.js diff --git a/lib/compress.js b/lib/compress.js index 47fb220a..21ec8e5c 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2988,6 +2988,12 @@ merge(Compressor.prototype, { return self; }); + OPT(AST_Class, function(self, compressor){ + // HACK to avoid compress failure. + // AST_Class is not really an AST_Scope/AST_Block as it lacks a body. + return self; + }); + OPT(AST_Yield, function(self, compressor){ if (!self.is_star && self.expression instanceof AST_Undefined) { self.expression = null; diff --git a/lib/transform.js b/lib/transform.js index 05e04853..c5df875b 100644 --- a/lib/transform.js +++ b/lib/transform.js @@ -227,6 +227,12 @@ TreeTransformer.prototype = new TreeWalker; self.value = self.value.transform(tw); }); + _(AST_Class, function(self, tw){ + if (self.name) self.name = self.name.transform(tw); + if (self.extends) self.extends = self.extends.transform(tw); + self.properties = do_list(self.properties, tw); + }); + _(AST_Expansion, function(self, tw){ self.expression = self.expression.transform(tw); }); diff --git a/test/compress/issue-1212.js b/test/compress/issue-1212.js new file mode 100644 index 00000000..72d6ffe0 --- /dev/null +++ b/test/compress/issue-1212.js @@ -0,0 +1,76 @@ +issue_1212_debug_false: { + options = { + global_defs : { DEBUG: false }, + sequences : true, + properties : true, + dead_code : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + loops : true, + unused : true, + hoist_funs : true, + keep_fargs : true, + if_return : true, + join_vars : true, + cascade : true, + side_effects : true, + } + input: { + class foo { + bar() { + if (DEBUG) + console.log("DEV"); + else + console.log("PROD"); + } + } + new foo().bar(); + } + expect: { + class foo{ + bar() { console.log("PROD") } + } + (new foo).bar(); + } +} + +issue_1212_debug_true: { + options = { + global_defs : { DEBUG: true }, + sequences : true, + properties : true, + dead_code : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + loops : true, + unused : true, + hoist_funs : true, + keep_fargs : true, + if_return : true, + join_vars : true, + cascade : true, + side_effects : true, + } + input: { + class foo { + bar() { + if (DEBUG) + console.log("DEV"); + else + console.log("PROD"); + } + } + new foo().bar(); + } + expect: { + class foo{ + bar() { console.log("DEV") } + } + (new foo).bar(); + } +} +