public object VisitNewExpression(JsNewExpression expression, bool parenthesized) { _cb.Append("new "); bool needParens = GetPrecedence(expression.Constructor.NodeType) >= PrecedenceMemberOrNewOrInvocation; if (expression.Constructor.NodeType == ExpressionNodeType.MemberAccess) { // We don't need to parenthesize something like new a.b.c() JsExpression expr = expression.Constructor; for (;;) { if (GetPrecedence(expr.NodeType) < PrecedenceMemberOrNewOrInvocation) { needParens = false; break; } else if (expr.NodeType == ExpressionNodeType.MemberAccess) { expr = ((JsMemberAccessExpression)expr).Target; } else { break; } } } VisitExpression(expression.Constructor, needParens); _cb.Append("("); VisitExpressionList(expression.Arguments); _cb.Append(")"); return(null); }
public override JsExpression VisitNewExpression(JsNewExpression expression, object data) { var c = VisitExpression(expression.Constructor, null); var a = expression.Arguments != null?VisitWithParamExpansion(expression.Arguments) : null; return(ReferenceEquals(c, expression.Constructor) && ReferenceEquals(a, expression.Arguments) ? expression : JsExpression.New(c, a)); }
public virtual JsExpression VisitNewExpression(JsNewExpression expression, TData data) { var constructor = VisitExpression(expression.Constructor, data); var arguments = expression.Arguments != null?VisitExpressions(expression.Arguments, data) : null; return(ReferenceEquals(constructor, expression.Constructor) && ReferenceEquals(arguments, expression.Arguments) ? expression : JsExpression.New(constructor, arguments)); }
public virtual JsNode Visit(JsNewExpression node) { return(DefaultVisit(node, x => { x.Expression = (JsExpression)x.Expression.Accept(this); return x; })); }
public virtual void Visit(JsNewExpression node) { DefaultVisit(node); node.Expression.Accept(this); }
public override JsExpression VisitNewExpression(JsNewExpression expression, object data) { _result = true; return(expression); }
public override void VisitNewExpression(JsNewExpression node) { output.Append("new "); node.Expression.Accept(this); }
public override JsExpression VisitNewExpression(JsNewExpression expression, object data) { Result.UsesExternalState = true; // Constructor invocation is external state. return(base.VisitNewExpression(expression, data)); }
public void Visit(JsNewExpression node) { BeforeVisit(node); DefaultVisit(node, VisitNewExpression); AfterVisit(node); }
public virtual void VisitNewExpression(JsNewExpression node) { }