Beispiel #1
0
        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));
        }
Beispiel #4
0
 public virtual JsNode Visit(JsNewExpression node)
 {
     return(DefaultVisit(node, x =>
     {
         x.Expression = (JsExpression)x.Expression.Accept(this);
         return x;
     }));
 }
Beispiel #5
0
 public virtual void Visit(JsNewExpression node)
 {
     DefaultVisit(node);
     node.Expression.Accept(this);
 }
 public override JsExpression VisitNewExpression(JsNewExpression expression, object data)
 {
     _result = true;
     return(expression);
 }
Beispiel #7
0
 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));
 }
Beispiel #9
0
 public void Visit(JsNewExpression node)
 {
     BeforeVisit(node);
     DefaultVisit(node, VisitNewExpression);
     AfterVisit(node);
 }
Beispiel #10
0
 public virtual void VisitNewExpression(JsNewExpression node)
 {
 }