From: Mihai Bazon Date: Wed, 7 Nov 2012 11:31:43 +0000 (+0200) Subject: fix another small regression X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=46be3f2bf19564a838179f523262f69dc1a9b5ac;p=UglifyJS.git fix another small regression we do need parens here: `new (foo.bar().baz)`, but not here: `new foo.bar.baz` --- diff --git a/lib/output.js b/lib/output.js index ad4690d5..7309737f 100644 --- a/lib/output.js +++ b/lib/output.js @@ -470,7 +470,22 @@ function OutputStream(options) { PARENS(AST_PropAccess, function(output){ var p = output.parent(); - return p instanceof AST_New && p.expression === this; + if (p instanceof AST_New && p.expression === this) { + // i.e. new (foo.bar().baz) + // + // if there's one call into this subtree, then we need + // parens around it too, otherwise the call will be + // interpreted as passing the arguments to the upper New + // expression. + try { + this.walk(new TreeWalker(function(node){ + if (node instanceof AST_Call) throw p; + })); + } catch(ex) { + if (ex !== p) throw ex; + return true; + } + } }); PARENS(AST_Call, function(output){