Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ValidateUserDefinedConditionalLogicOperator()

static void System.Linq.Expressions.Expression< TDelegate >.ValidateUserDefinedConditionalLogicOperator ( ExpressionType nodeType,
Type left,
Type right,
MethodInfo method )
inlinestaticprivateinherited

Definition at line 913 of file Expression.cs.

914 {
916 ParameterInfo[] parametersCached = method.GetParametersCached();
917 if (parametersCached.Length != 2)
918 {
919 throw Error.IncorrectNumberOfMethodCallArguments(method, "method");
920 }
921 if (!ParameterIsAssignable(parametersCached[0], left) && (!left.IsNullableType() || !ParameterIsAssignable(parametersCached[0], left.GetNonNullableType())))
922 {
923 throw Error.OperandTypesDoNotMatchParameters(nodeType, method.Name);
924 }
925 if (!ParameterIsAssignable(parametersCached[1], right) && (!right.IsNullableType() || !ParameterIsAssignable(parametersCached[1], right.GetNonNullableType())))
926 {
927 throw Error.OperandTypesDoNotMatchParameters(nodeType, method.Name);
928 }
929 if (parametersCached[0].ParameterType != parametersCached[1].ParameterType)
930 {
931 throw Error.UserDefinedOpMustHaveConsistentTypes(nodeType, method.Name);
932 }
933 if (method.ReturnType != parametersCached[0].ParameterType)
934 {
935 throw Error.UserDefinedOpMustHaveConsistentTypes(nodeType, method.Name);
936 }
938 {
939 left = left.GetNonNullableType();
940 }
941 Type declaringType = method.DeclaringType;
942 if (declaringType == null)
943 {
944 throw Error.LogicalOperatorMustHaveBooleanOperators(nodeType, method.Name);
945 }
948 if (booleanOperator == null || booleanOperator.ReturnType != typeof(bool) || booleanOperator2 == null || booleanOperator2.ReturnType != typeof(bool))
949 {
950 throw Error.LogicalOperatorMustHaveBooleanOperators(nodeType, method.Name);
951 }
952 VerifyOpTrueFalse(nodeType, left, booleanOperator2, "method");
953 VerifyOpTrueFalse(nodeType, left, booleanOperator, "method");
954 }
static MethodInfo GetBooleanOperator(Type type, string name)
Definition TypeUtils.cs:640
static bool IsValidLiftedConditionalLogicalOperator(Type left, Type right, ParameterInfo[] pms)
static void ValidateOperator(MethodInfo method)
static void VerifyOpTrueFalse(ExpressionType nodeType, Type left, MethodInfo opTrue, string paramName)
static bool ParameterIsAssignable(ParameterInfo pi, Type argType)

References System.Dynamic.Utils.TypeUtils.GetBooleanOperator(), System.Linq.Expressions.Error.IncorrectNumberOfMethodCallArguments(), System.Linq.Expressions.Expression< TDelegate >.IsValidLiftedConditionalLogicalOperator(), System.Linq.Expressions.Error.LogicalOperatorMustHaveBooleanOperators(), System.Linq.Expressions.Error.OperandTypesDoNotMatchParameters(), System.Linq.Expressions.Expression< TDelegate >.ParameterIsAssignable(), System.Linq.Expressions.Error.UserDefinedOpMustHaveConsistentTypes(), System.Linq.Expressions.Expression< TDelegate >.ValidateOperator(), and System.Linq.Expressions.Expression< TDelegate >.VerifyOpTrueFalse().

Referenced by System.Linq.Expressions.Expression< TDelegate >.AndAlso(), and System.Linq.Expressions.Expression< TDelegate >.OrElse().