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

◆ GetEqualityComparisonOperator()

static BinaryExpression System.Linq.Expressions.Expression< TDelegate >.GetEqualityComparisonOperator ( ExpressionType binaryType,
string opName,
Expression< TDelegate > left,
Expression< TDelegate > right,
bool liftToNull )
inlinestaticprivateinherited

Definition at line 1089 of file Expression.cs.

1090 {
1091 if (left.Type == right.Type && (left.Type.IsNumeric() || left.Type == typeof(object) || left.Type.IsBool() || left.Type.GetNonNullableType().IsEnum))
1092 {
1093 if (left.Type.IsNullableType() && liftToNull)
1094 {
1095 return new SimpleBinaryExpression(binaryType, left, right, typeof(bool?));
1096 }
1097 return new LogicalBinaryExpression(binaryType, left, right);
1098 }
1100 if (userDefinedBinaryOperator != null)
1101 {
1103 }
1104 if (TypeUtils.HasBuiltInEqualityOperator(left.Type, right.Type) || IsNullComparison(left, right))
1105 {
1106 if (left.Type.IsNullableType() && liftToNull)
1107 {
1108 return new SimpleBinaryExpression(binaryType, left, right, typeof(bool?));
1109 }
1110 return new LogicalBinaryExpression(binaryType, left, right);
1111 }
1112 throw Error.BinaryOperatorNotDefined(binaryType, left.Type, right.Type);
1113 }
static bool HasBuiltInEqualityOperator(Type left, Type right)
Definition TypeUtils.cs:452
static BinaryExpression GetUserDefinedBinaryOperator(ExpressionType binaryType, string name, Expression left, Expression right, bool liftToNull)
static bool IsNullComparison(Expression left, Expression right)

References System.Linq.Expressions.Error.BinaryOperatorNotDefined(), System.Linq.Expressions.Expression< TDelegate >.GetUserDefinedBinaryOperator(), System.Dynamic.Utils.TypeUtils.HasBuiltInEqualityOperator(), and System.Linq.Expressions.Expression< TDelegate >.IsNullComparison().

Referenced by System.Linq.Expressions.Expression< TDelegate >.Equal(), and System.Linq.Expressions.Expression< TDelegate >.NotEqual().