Beispiel #1
0
        public Arguments Clone(CloneContext cloneContext)
        {
            var clone = new Arguments(_arguments.Count);

            clone.AddRange(_arguments.Select(o => Ast.Clone(cloneContext, o)));
            return(clone);
        }
Beispiel #2
0
        public InvokeExpression(Expression target, IEnumerable <Argument> arguments)
            : this()
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            Target = target;

            if (arguments != null)
            {
                Arguments.AddRange(arguments);
            }
        }
Beispiel #3
0
        public CallExpression(MethodInfo method, Expression target, IEnumerable <Argument> arguments)
            : this()
        {
            if (method == null)
            {
                throw new ArgumentNullException("method");
            }
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            Method = method;
            Target = target;

            if (arguments != null)
            {
                Arguments.AddRange(arguments);
            }
        }
Beispiel #4
0
        public CallExpression(string methodName, Expression target, IEnumerable <Argument> arguments)
            : this()
        {
            if (methodName == null)
            {
                throw new ArgumentNullException("methodName");
            }
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            MethodName = methodName;
            Target     = target;

            if (arguments != null)
            {
                Arguments.AddRange(arguments);
            }
        }
Beispiel #5
0
        public void Append(Expression operand)
        {
            //
            // Constant folding
            //
            var sc = operand as ConstantExpression <string>;

            if (sc != null)
            {
                if (_arguments.Count != 0)
                {
                    var lastArgument     = _arguments[_arguments.Count - 1];
                    var lastExprConstant = lastArgument.Value as ConstantExpression <string>;

                    if (lastExprConstant != null)
                    {
                        lastArgument.Value = new ConstantExpression <string>(
                            lastExprConstant.Value + sc.Value,
                            sc.Span);

                        return;
                    }
                }
            }
            else
            {
                //
                // Multiple (3+) concatenation are resolved as multiple StringConcat instances
                //
                var concatOper = operand as ConcatExpression;
                if (concatOper != null)
                {
                    _arguments.AddRange(concatOper._arguments);
                    return;
                }
            }

            _arguments.Add(new Argument(operand));
        }