public FunctionCallExpression4(FunctionExpression method, XzaarExpression arg0, XzaarExpression arg1, XzaarExpression arg2, XzaarExpression arg3) : base(method) { _arg0 = arg0; _arg1 = arg1; _arg2 = arg2; _arg3 = arg3; }
public InstanceFunctionCallExpression2(FunctionExpression method, XzaarExpression instance, XzaarExpression arg0, XzaarExpression arg1) : base(method) { //Debug.Assert(instance != null); _instance = instance; _arg0 = arg0; _arg1 = arg1; }
private static ParameterExpression[] GetParametersForValidation(FunctionExpression method, ExpressionType nodeKind) { if (nodeKind != ExpressionType.Dynamic) { return(method.Parameters); } var methodParam = method.Parameters; var param = new ParameterExpression[methodParam.Length - 1]; Array.Copy(methodParam, 1, param, 0, param.Length); return(param); }
public static FunctionCallExpression Call(string alias, FunctionExpression method, params XzaarExpression[] arguments) { if (method == null) { throw new ArgumentNullException(nameof(method)); } ReadOnlyCollection <XzaarExpression> argList = new ReadOnlyCollection <XzaarExpression>(arguments); ValidateMethodInfo(method); ValidateArgumentTypes(method, ExpressionType.Call, ref argList); return(new FunctionCallExpressionN(alias, method, argList)); }
private static XzaarExpression ValidateOneArgument(FunctionExpression method, ExpressionType nodeKind, XzaarExpression arg, ParameterExpression pi) { if (pi == null) { // this is most likely an 'Any' object return(arg); } RequiresCanRead(arg, "arguments"); var pType = pi.Type.IsByRef ? pi.Type.GetElementType() : pi.Type; // XzaarTypeUtils.ValidateType(pType); if (!XzaarTypeUtils.AreReferenceAssignable(pType, arg.Type)) { if (TryQuote(pType, ref arg)) { return(arg); } // Throw the right error for the node we were given switch (nodeKind) { case ExpressionType.New: throw new InvalidOperationException(); // throw Error.ExpressionTypeDoesNotMatchConstructorParameter(arg.Type, pType); case ExpressionType.Invoke: throw new InvalidOperationException(); // throw Error.ExpressionTypeDoesNotMatchParameter(arg.Type, pType); case ExpressionType.Dynamic: case ExpressionType.Call: throw new ExpressionException("Expression type does not match method parameter: '" + arg.Type.Name + "' and '" + pType.Name + "'"); // throw Error.ExpressionTypeDoesNotMatchMethodParameter(arg.Type, pType, method); default: throw new InvalidOperationException(); // throw ContractUtils.Unreachable; } } return(arg); }
internal FunctionCallExpression(string alias, FunctionExpression method, IList <XzaarExpression> args = null) { arguments = args ?? new List <XzaarExpression>(); this.function = method; this.alias = alias; }
internal FunctionCallExpression(FunctionExpression method, IList <XzaarExpression> args = null) { arguments = args ?? new List <XzaarExpression>(); this.function = method; }
public FunctionCallExpression2(FunctionExpression method, XzaarExpression arg0, XzaarExpression arg1) : base(method) { _arg0 = arg0; _arg1 = arg1; }
public FunctionCallExpression1(FunctionExpression method, XzaarExpression arg0) : base(method) { _arg0 = arg0; }
public InstanceFunctionCallExpressionN(FunctionExpression method, XzaarExpression instance, IList <XzaarExpression> args) : base(method) { _instance = instance; arguments = args; }
public FunctionCallExpressionN(string alias, FunctionExpression method, IList <XzaarExpression> args) : base(alias, method, args) { arguments = args; }
public FunctionCallExpressionN(FunctionExpression method, IList <XzaarExpression> args) : base(method, args) { arguments = args; }