public override void CodeGen(OutputContext output) { Expression.Print(output); if (this is AstNew && !output.NeedConstructorParens(this)) { return; } if (Expression is AstCall or AstLambda) { output.AddMapping(Expression.Source, Start, false); } if (Optional) { output.Print("?."); } output.Print("("); for (var i = 0u; i < Args.Count; i++) { if (i > 0) { output.Comma(); } Args[i].Print(output); } output.Print(")"); }
public override bool NeedParens(OutputContext output) { var p = output.Parent(); return(!output.NeedConstructorParens(this) && (p is AstPropAccess || // (new Date).getTime(), (new Date)["getTime"]() p is AstCall call && call.Expression == this)); // (new foo)(bar) }