diff options
author | Mihai Bazon <mihai.bazon@gmail.com> | 2013-09-19 18:20:45 +0300 |
---|---|---|
committer | Mihai Bazon <mihai.bazon@gmail.com> | 2013-09-19 18:20:45 +0300 |
commit | 78e98d2611f5698797785adbd12faf2ba46ec783 (patch) | |
tree | 6bace696ebb22da18ef3fb06289ffee963ffb9dc /lib | |
parent | 8d14efe818d9a33821a6acc26b612aaf1fd6e967 (diff) | |
download | tracifyjs-78e98d2611f5698797785adbd12faf2ba46ec783.tar.gz tracifyjs-78e98d2611f5698797785adbd12faf2ba46ec783.zip |
When `unsafe` is set, evaluate [...].join() if possible
Close #298
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js index 8bd58bb1..35646cf1 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -746,6 +746,19 @@ merge(Compressor.prototype, { if (d && d.constant && d.init) return ev(d.init, compressor); throw def; }); + def(AST_Call, function(compressor){ + if (compressor.option("unsafe")) { + if (this.expression instanceof AST_Dot + && this.expression.expression instanceof AST_Array + && this.expression.property == "join") { + var x = this.expression.expression.elements.map(function(el){ + return ev(el, compressor); + }); + return x.join(ev(this.args[0])); + } + } + throw def; + }); })(function(node, func){ node.DEFMETHOD("_eval", func); }); @@ -1704,7 +1717,7 @@ merge(Compressor.prototype, { return make_node(AST_Undefined, self).transform(compressor); } } - return self; + return self.evaluate(compressor)[0]; }); OPT(AST_New, function(self, compressor){ |