From 46be3f2bf19564a838179f523262f69dc1a9b5ac Mon Sep 17 00:00:00 2001 From: Mihai Bazon Date: Wed, 7 Nov 2012 13:31:43 +0200 Subject: [PATCH] fix another small regression we do need parens here: `new (foo.bar().baz)`, but not here: `new foo.bar.baz` --- lib/output.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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){ -- 2.34.1