Example #1
0
    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(")");
    }
Example #2
0
        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)
        }