diff options
-rw-r--r-- | lib/compress.js | 7 | ||||
-rw-r--r-- | test/compress/arrays.js | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/compress.js b/lib/compress.js index 35646cf1..abf2001d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -655,6 +655,8 @@ merge(Compressor.prototype, { throw def; }); function ev(node, compressor) { + if (!compressor) throw new Error("Compressor must be passed"); + return node._eval(compressor); }; def(AST_Node, function(){ @@ -700,9 +702,6 @@ merge(Compressor.prototype, { case "+" : // handle concatenating strings even if the left part cannot // be evaluated, e.g. (variable + "str") + "str" - if (!(c instanceof Compressor)) { - throw new Error("Compressor must be passed!!"); - } if (left instanceof AST_Binary && left.operator == "+" && left.is_string(c)) { return make_node(AST_Binary, this, { operator: "+", @@ -754,7 +753,7 @@ merge(Compressor.prototype, { var x = this.expression.expression.elements.map(function(el){ return ev(el, compressor); }); - return x.join(ev(this.args[0])); + return x.join(ev(this.args[0], compressor)); } } throw def; diff --git a/test/compress/arrays.js b/test/compress/arrays.js index 214928dd..06e03ae4 100644 --- a/test/compress/arrays.js +++ b/test/compress/arrays.js @@ -23,11 +23,13 @@ constant_join: { var b = [ "foo", 1, 2, 3, "bar" ].join(""); var c = [ boo(), "foo", 1, 2, 3, "bar", bar() ].join(""); var d = [ "foo", 1 + 2 + "bar", "baz" ].join("-"); + var e = [].join(foo + bar); } expect: { var a = "foobarbaz"; var b = "foo123bar"; var c = [ boo(), "foo", 1, 2, 3, "bar", bar() ].join(""); // we could still shorten this one, but oh well. var d = "foo-3bar-baz"; + var e = [].join(foo + bar); } } |