Lines Matching refs:left

43         internal BinaryExpression(Expression left, Expression right) {  in BinaryExpression()  argument
44 _left = left; in BinaryExpression()
118 … public BinaryExpression Update(Expression left, LambdaExpression conversion, Expression right) { in Update() argument
119 if (left == Left && right == Right && conversion == Conversion) { in Update()
124 return Expression.ReferenceEqual(left, right); in Update()
126 return Expression.ReferenceNotEqual(left, right); in Update()
129 return Expression.MakeBinary(NodeType, left, right, IsLiftedToNull, Method, conversion); in Update()
340 …internal static Expression Create(ExpressionType nodeType, Expression left, Expression right, Type… in Create() argument
342 Debug.Assert(method == null && TypeUtils.AreEquivalent(type, left.Type)); in Create()
343 return new AssignBinaryExpression(left, right); in Create()
347 return new CoalesceConversionBinaryExpression(left, right, conversion); in Create()
350 return new MethodBinaryExpression(nodeType, left, right, type, method); in Create()
353 return new LogicalBinaryExpression(nodeType, left, right); in Create()
355 return new SimpleBinaryExpression(nodeType, left, right, type); in Create()
360 Type left = _left.Type;
367 TypeUtils.AreEquivalent(right, left) &&
368 TypeUtils.IsNullableType(left) &&
370 TypeUtils.AreEquivalent(method.ReturnType, TypeUtils.GetNonNullableType(left));
376 Type left = _left.Type;
382 method == null && !left.IsValueType && !right.IsValueType;
418 var left = Parameter(_left.Type, "left"); in ReduceUserdefinedLifted()
425 new[] { left }, in ReduceUserdefinedLifted()
426 Assign(left, _left), in ReduceUserdefinedLifted()
428 Property(left, "HasValue"), in ReduceUserdefinedLifted()
430 Call(opTrueFalse, Call(left, "GetValueOrDefault", null)), in ReduceUserdefinedLifted()
431 left, in ReduceUserdefinedLifted()
440 Call(left, "GetValueOrDefault", null), in ReduceUserdefinedLifted()
460 internal LogicalBinaryExpression(ExpressionType nodeType, Expression left, Expression right) in LogicalBinaryExpression() argument
461 : base(left, right) { in LogicalBinaryExpression()
476 internal AssignBinaryExpression(Expression left, Expression right) in AssignBinaryExpression() argument
477 : base(left, right) { in AssignBinaryExpression()
495 …internal CoalesceConversionBinaryExpression(Expression left, Expression right, LambdaExpression co… in CoalesceConversionBinaryExpression() argument
496 : base(left, right) { in CoalesceConversionBinaryExpression()
519 …internal OpAssignMethodConversionBinaryExpression(ExpressionType nodeType, Expression left, Expres… in OpAssignMethodConversionBinaryExpression() argument
520 : base(nodeType, left, right, type, method) { in OpAssignMethodConversionBinaryExpression()
535 …internal SimpleBinaryExpression(ExpressionType nodeType, Expression left, Expression right, Type t… in SimpleBinaryExpression() argument
536 : base(left, right) { in SimpleBinaryExpression()
555 …internal MethodBinaryExpression(ExpressionType nodeType, Expression left, Expression right, Type t… in MethodBinaryExpression() argument
556 : base(nodeType, left, right, type) { in MethodBinaryExpression()
577 public static BinaryExpression Assign(Expression left, Expression right) { in Assign() argument
578 RequiresCanWrite(left, "left"); in Assign()
580 TypeUtils.ValidateType(left.Type); in Assign()
582 if (!TypeUtils.AreReferenceAssignable(left.Type, right.Type)) { in Assign()
583 throw Error.ExpressionTypeDoesNotMatchAssignment(right.Type, left.Type); in Assign()
585 return new AssignBinaryExpression(left, right); in Assign()
591 …rDefinedBinaryOperator(ExpressionType binaryType, string name, Expression left, Expression right, … in GetUserDefinedBinaryOperator() argument
593 … MethodInfo method = GetUserDefinedBinaryOperator(binaryType, left.Type, right.Type, name); in GetUserDefinedBinaryOperator()
595 … return new MethodBinaryExpression(binaryType, left, right, method.ReturnType, method); in GetUserDefinedBinaryOperator()
598 if (TypeUtils.IsNullableType(left.Type) && TypeUtils.IsNullableType(right.Type)) { in GetUserDefinedBinaryOperator()
599 Type nnLeftType = TypeUtils.GetNonNullableType(left.Type); in GetUserDefinedBinaryOperator()
604 …return new MethodBinaryExpression(binaryType, left, right, TypeUtils.GetNullableType(method.Return… in GetUserDefinedBinaryOperator()
606 … return new MethodBinaryExpression(binaryType, left, right, typeof(bool), method); in GetUserDefinedBinaryOperator()
614 …ession GetMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, … in GetMethodBasedBinaryOperator() argument
620 … if (ParameterIsAssignable(pms[0], left.Type) && ParameterIsAssignable(pms[1], right.Type)) { in GetMethodBasedBinaryOperator()
621 … ValidateParamswithOperandsOrThrow(pms[0].ParameterType, left.Type, binaryType, method.Name); in GetMethodBasedBinaryOperator()
623 … return new MethodBinaryExpression(binaryType, left, right, method.ReturnType, method); in GetMethodBasedBinaryOperator()
627 if (TypeUtils.IsNullableType(left.Type) && TypeUtils.IsNullableType(right.Type) && in GetMethodBasedBinaryOperator()
628 ParameterIsAssignable(pms[0], TypeUtils.GetNonNullableType(left.Type)) && in GetMethodBasedBinaryOperator()
632 …return new MethodBinaryExpression(binaryType, left, right, TypeUtils.GetNullableType(method.Return… in GetMethodBasedBinaryOperator()
634 … return new MethodBinaryExpression(binaryType, left, right, typeof(bool), method); in GetMethodBasedBinaryOperator()
640 …ession GetMethodBasedAssignOperator(ExpressionType binaryType, Expression left, Expression right, … in GetMethodBasedAssignOperator() argument
641 … BinaryExpression b = GetMethodBasedBinaryOperator(binaryType, left, right, method, liftToNull); in GetMethodBasedAssignOperator()
644 if (!TypeUtils.AreReferenceAssignable(left.Type, b.Type)) { in GetMethodBasedAssignOperator()
656 …dBinaryOperatorOrThrow(ExpressionType binaryType, string name, Expression left, Expression right, … in GetUserDefinedBinaryOperatorOrThrow() argument
657 … BinaryExpression b = GetUserDefinedBinaryOperator(binaryType, name, left, right, liftToNull); in GetUserDefinedBinaryOperatorOrThrow()
660 … ValidateParamswithOperandsOrThrow(pis[0].ParameterType, left.Type, binaryType, name); in GetUserDefinedBinaryOperatorOrThrow()
664 throw Error.BinaryOperatorNotDefined(binaryType, left.Type, right.Type); in GetUserDefinedBinaryOperatorOrThrow()
667 …dAssignOperatorOrThrow(ExpressionType binaryType, string name, Expression left, Expression right, … in GetUserDefinedAssignOperatorOrThrow() argument
668 …BinaryExpression b = GetUserDefinedBinaryOperatorOrThrow(binaryType, name, left, right, liftToNull… in GetUserDefinedAssignOperatorOrThrow()
671 if (!TypeUtils.AreReferenceAssignable(left.Type, b.Type)) { in GetUserDefinedAssignOperatorOrThrow()
702 …private static bool IsLiftingConditionalLogicalOperator(Type left, Type right, MethodInfo method, … in IsLiftingConditionalLogicalOperator() argument
704 TypeUtils.IsNullableType(left) && in IsLiftingConditionalLogicalOperator()
743 private static bool IsNullComparison(Expression left, Expression right) { in IsNullComparison() argument
748 … if (IsNullConstant(left) && !IsNullConstant(right) && TypeUtils.IsNullableType(right.Type)) { in IsNullComparison()
751 … if (IsNullConstant(right) && !IsNullConstant(left) && TypeUtils.IsNullableType(left.Type)) { in IsNullComparison()
769 …ValidateUserDefinedConditionalLogicOperator(ExpressionType nodeType, Type left, Type right, Method… in ValidateUserDefinedConditionalLogicOperator() argument
774 if (!ParameterIsAssignable(pms[0], left)) { in ValidateUserDefinedConditionalLogicOperator()
775 …if (!(TypeUtils.IsNullableType(left) && ParameterIsAssignable(pms[0], TypeUtils.GetNonNullableType… in ValidateUserDefinedConditionalLogicOperator()
788 if (IsValidLiftedConditionalLogicalOperator(left, right, pms)) { in ValidateUserDefinedConditionalLogicOperator()
789 left = TypeUtils.GetNonNullableType(left); in ValidateUserDefinedConditionalLogicOperator()
790 right = TypeUtils.GetNonNullableType(left); in ValidateUserDefinedConditionalLogicOperator()
798 VerifyOpTrueFalse(nodeType, left, opFalse); in ValidateUserDefinedConditionalLogicOperator()
799 VerifyOpTrueFalse(nodeType, left, opTrue); in ValidateUserDefinedConditionalLogicOperator()
802 … private static void VerifyOpTrueFalse(ExpressionType nodeType, Type left, MethodInfo opTrue) { in VerifyOpTrueFalse() argument
807 if (!ParameterIsAssignable(pmsOpTrue[0], left)) { in VerifyOpTrueFalse()
808 …if (!(TypeUtils.IsNullableType(left) && ParameterIsAssignable(pmsOpTrue[0], TypeUtils.GetNonNullab… in VerifyOpTrueFalse()
813 …private static bool IsValidLiftedConditionalLogicalOperator(Type left, Type right, ParameterInfo[]… in IsValidLiftedConditionalLogicalOperator() argument
814 return TypeUtils.AreEquivalent(left, right) && in IsValidLiftedConditionalLogicalOperator()
827 …public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression r… in MakeBinary() argument
828 return MakeBinary(binaryType, left, right, false, null, null); in MakeBinary()
840 …public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression r… in MakeBinary() argument
841 return MakeBinary(binaryType, left, right, liftToNull, method, null); in MakeBinary()
856 …public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression r… in MakeBinary() argument
859 return Add(left, right, method); in MakeBinary()
861 return AddChecked(left, right, method); in MakeBinary()
863 return Subtract(left, right, method); in MakeBinary()
865 return SubtractChecked(left, right, method); in MakeBinary()
867 return Multiply(left, right, method); in MakeBinary()
869 return MultiplyChecked(left, right, method); in MakeBinary()
871 return Divide(left, right, method); in MakeBinary()
873 return Modulo(left, right, method); in MakeBinary()
875 return Power(left, right, method); in MakeBinary()
877 return And(left, right, method); in MakeBinary()
879 return AndAlso(left, right, method); in MakeBinary()
881 return Or(left, right, method); in MakeBinary()
883 return OrElse(left, right, method); in MakeBinary()
885 return LessThan(left, right, liftToNull, method); in MakeBinary()
887 return LessThanOrEqual(left, right, liftToNull, method); in MakeBinary()
889 return GreaterThan(left, right, liftToNull, method); in MakeBinary()
891 return GreaterThanOrEqual(left, right, liftToNull, method); in MakeBinary()
893 return Equal(left, right, liftToNull, method); in MakeBinary()
895 return NotEqual(left, right, liftToNull, method); in MakeBinary()
897 return ExclusiveOr(left, right, method); in MakeBinary()
899 return Coalesce(left, right, conversion); in MakeBinary()
901 return ArrayIndex(left, right); in MakeBinary()
903 return RightShift(left, right, method); in MakeBinary()
905 return LeftShift(left, right, method); in MakeBinary()
907 return Assign(left, right); in MakeBinary()
909 return AddAssign(left, right, method, conversion); in MakeBinary()
911 return AndAssign(left, right, method, conversion); in MakeBinary()
913 return DivideAssign(left, right, method, conversion); in MakeBinary()
915 return ExclusiveOrAssign(left, right, method, conversion); in MakeBinary()
917 return LeftShiftAssign(left, right, method, conversion); in MakeBinary()
919 return ModuloAssign(left, right, method, conversion); in MakeBinary()
921 return MultiplyAssign(left, right, method, conversion); in MakeBinary()
923 return OrAssign(left, right, method, conversion); in MakeBinary()
925 return PowerAssign(left, right, method, conversion); in MakeBinary()
927 return RightShiftAssign(left, right, method, conversion); in MakeBinary()
929 return SubtractAssign(left, right, method, conversion); in MakeBinary()
931 return AddAssignChecked(left, right, method, conversion); in MakeBinary()
933 return SubtractAssignChecked(left, right, method, conversion); in MakeBinary()
935 return MultiplyAssignChecked(left, right, method, conversion); in MakeBinary()
951 public static BinaryExpression Equal(Expression left, Expression right) { in Equal() argument
952 return Equal(left, right, false, null); in Equal()
965 …public static BinaryExpression Equal(Expression left, Expression right, bool liftToNull, MethodInf… in Equal() argument
966 RequiresCanRead(left, "left"); in Equal()
969 …return GetEqualityComparisonOperator(ExpressionType.Equal, "op_Equality", left, right, liftToNull); in Equal()
971 … return GetMethodBasedBinaryOperator(ExpressionType.Equal, left, right, method, liftToNull); in Equal()
982 public static BinaryExpression ReferenceEqual(Expression left, Expression right) { in ReferenceEqual() argument
983 RequiresCanRead(left, "left"); in ReferenceEqual()
985 if (TypeUtils.HasReferenceEquality(left.Type, right.Type)) { in ReferenceEqual()
986 return new LogicalBinaryExpression(ExpressionType.Equal, left, right); in ReferenceEqual()
988 throw Error.ReferenceEqualityNotDefined(left.Type, right.Type); in ReferenceEqual()
998 public static BinaryExpression NotEqual(Expression left, Expression right) { in NotEqual() argument
999 return NotEqual(left, right, false, null); in NotEqual()
1012 …public static BinaryExpression NotEqual(Expression left, Expression right, bool liftToNull, Method… in NotEqual() argument
1013 RequiresCanRead(left, "left"); in NotEqual()
1016 …return GetEqualityComparisonOperator(ExpressionType.NotEqual, "op_Inequality", left, right, liftTo… in NotEqual()
1018 … return GetMethodBasedBinaryOperator(ExpressionType.NotEqual, left, right, method, liftToNull); in NotEqual()
1029 public static BinaryExpression ReferenceNotEqual(Expression left, Expression right) { in ReferenceNotEqual() argument
1030 RequiresCanRead(left, "left"); in ReferenceNotEqual()
1032 if (TypeUtils.HasReferenceEquality(left.Type, right.Type)) { in ReferenceNotEqual()
1033 return new LogicalBinaryExpression(ExpressionType.NotEqual, left, right); in ReferenceNotEqual()
1035 throw Error.ReferenceEqualityNotDefined(left.Type, right.Type); in ReferenceNotEqual()
1038 …tyComparisonOperator(ExpressionType binaryType, string opName, Expression left, Expression right, … in GetEqualityComparisonOperator() argument
1040 if (left.Type == right.Type && (TypeUtils.IsNumeric(left.Type) || in GetEqualityComparisonOperator()
1041 left.Type == typeof(object) || in GetEqualityComparisonOperator()
1042 TypeUtils.IsBool(left.Type) || in GetEqualityComparisonOperator()
1043 TypeUtils.GetNonNullableType(left.Type).IsEnum)) { in GetEqualityComparisonOperator()
1044 if (TypeUtils.IsNullableType(left.Type) && liftToNull) { in GetEqualityComparisonOperator()
1045 return new SimpleBinaryExpression(binaryType, left, right, typeof(bool?)); in GetEqualityComparisonOperator()
1047 return new LogicalBinaryExpression(binaryType, left, right); in GetEqualityComparisonOperator()
1051 … BinaryExpression b = GetUserDefinedBinaryOperator(binaryType, opName, left, right, liftToNull); in GetEqualityComparisonOperator()
1055 …if (TypeUtils.HasBuiltInEqualityOperator(left.Type, right.Type) || IsNullComparison(left, right)) { in GetEqualityComparisonOperator()
1056 if (TypeUtils.IsNullableType(left.Type) && liftToNull) { in GetEqualityComparisonOperator()
1057 return new SimpleBinaryExpression(binaryType, left, right, typeof(bool?)); in GetEqualityComparisonOperator()
1059 return new LogicalBinaryExpression(binaryType, left, right); in GetEqualityComparisonOperator()
1062 throw Error.BinaryOperatorNotDefined(binaryType, left.Type, right.Type); in GetEqualityComparisonOperator()
1077 public static BinaryExpression GreaterThan(Expression left, Expression right) { in GreaterThan() argument
1078 return GreaterThan(left, right, false, null); in GreaterThan()
1091 …public static BinaryExpression GreaterThan(Expression left, Expression right, bool liftToNull, Met… in GreaterThan() argument
1092 RequiresCanRead(left, "left"); in GreaterThan()
1095 …return GetComparisonOperator(ExpressionType.GreaterThan, "op_GreaterThan", left, right, liftToNull… in GreaterThan()
1097 … return GetMethodBasedBinaryOperator(ExpressionType.GreaterThan, left, right, method, liftToNull); in GreaterThan()
1108 public static BinaryExpression LessThan(Expression left, Expression right) { in LessThan() argument
1109 return LessThan(left, right, false, null); in LessThan()
1122 …public static BinaryExpression LessThan(Expression left, Expression right, bool liftToNull, Method… in LessThan() argument
1123 RequiresCanRead(left, "left"); in LessThan()
1126 … return GetComparisonOperator(ExpressionType.LessThan, "op_LessThan", left, right, liftToNull); in LessThan()
1128 … return GetMethodBasedBinaryOperator(ExpressionType.LessThan, left, right, method, liftToNull); in LessThan()
1139 public static BinaryExpression GreaterThanOrEqual(Expression left, Expression right) { in GreaterThanOrEqual() argument
1140 return GreaterThanOrEqual(left, right, false, null); in GreaterThanOrEqual()
1153 …public static BinaryExpression GreaterThanOrEqual(Expression left, Expression right, bool liftToNu… in GreaterThanOrEqual() argument
1154 RequiresCanRead(left, "left"); in GreaterThanOrEqual()
1157 …risonOperator(ExpressionType.GreaterThanOrEqual, "op_GreaterThanOrEqual", left, right, liftToNull); in GreaterThanOrEqual()
1159 …return GetMethodBasedBinaryOperator(ExpressionType.GreaterThanOrEqual, left, right, method, liftTo… in GreaterThanOrEqual()
1170 public static BinaryExpression LessThanOrEqual(Expression left, Expression right) { in LessThanOrEqual() argument
1171 return LessThanOrEqual(left, right, false, null); in LessThanOrEqual()
1184 …public static BinaryExpression LessThanOrEqual(Expression left, Expression right, bool liftToNull,… in LessThanOrEqual() argument
1185 RequiresCanRead(left, "left"); in LessThanOrEqual()
1188 …tComparisonOperator(ExpressionType.LessThanOrEqual, "op_LessThanOrEqual", left, right, liftToNull); in LessThanOrEqual()
1190 …return GetMethodBasedBinaryOperator(ExpressionType.LessThanOrEqual, left, right, method, liftToNul… in LessThanOrEqual()
1194 …etComparisonOperator(ExpressionType binaryType, string opName, Expression left, Expression right, … in GetComparisonOperator() argument
1195 if (left.Type == right.Type && TypeUtils.IsNumeric(left.Type)) { in GetComparisonOperator()
1196 if (TypeUtils.IsNullableType(left.Type) && liftToNull) { in GetComparisonOperator()
1197 return new SimpleBinaryExpression(binaryType, left, right, typeof(bool?)); in GetComparisonOperator()
1199 return new LogicalBinaryExpression(binaryType, left, right); in GetComparisonOperator()
1202 return GetUserDefinedBinaryOperatorOrThrow(binaryType, opName, left, right, liftToNull); in GetComparisonOperator()
1217 public static BinaryExpression AndAlso(Expression left, Expression right) { in AndAlso() argument
1218 return AndAlso(left, right, null); in AndAlso()
1230 … public static BinaryExpression AndAlso(Expression left, Expression right, MethodInfo method) { in AndAlso() argument
1231 RequiresCanRead(left, "left"); in AndAlso()
1235 if (left.Type == right.Type) { in AndAlso()
1236 if (left.Type == typeof(bool)) { in AndAlso()
1237 return new LogicalBinaryExpression(ExpressionType.AndAlso, left, right); in AndAlso()
1238 } else if (left.Type == typeof(bool?)) { in AndAlso()
1239 … return new SimpleBinaryExpression(ExpressionType.AndAlso, left, right, left.Type); in AndAlso()
1242 …method = GetUserDefinedBinaryOperator(ExpressionType.AndAlso, left.Type, right.Type, "op_BitwiseAn… in AndAlso()
1244 …ValidateUserDefinedConditionalLogicOperator(ExpressionType.AndAlso, left.Type, right.Type, method); in AndAlso()
1245 …ypeUtils.IsNullableType(left.Type) && TypeUtils.AreEquivalent(method.ReturnType, TypeUtils.GetNonN… in AndAlso()
1246 … return new MethodBinaryExpression(ExpressionType.AndAlso, left, right, returnType, method); in AndAlso()
1248 throw Error.BinaryOperatorNotDefined(ExpressionType.AndAlso, left.Type, right.Type); in AndAlso()
1250 …ValidateUserDefinedConditionalLogicOperator(ExpressionType.AndAlso, left.Type, right.Type, method); in AndAlso()
1251 …ypeUtils.IsNullableType(left.Type) && TypeUtils.AreEquivalent(method.ReturnType, TypeUtils.GetNonN… in AndAlso()
1252 … return new MethodBinaryExpression(ExpressionType.AndAlso, left, right, returnType, method); in AndAlso()
1263 public static BinaryExpression OrElse(Expression left, Expression right) { in OrElse() argument
1264 return OrElse(left, right, null); in OrElse()
1276 … public static BinaryExpression OrElse(Expression left, Expression right, MethodInfo method) { in OrElse() argument
1277 RequiresCanRead(left, "left"); in OrElse()
1281 if (left.Type == right.Type) { in OrElse()
1282 if (left.Type == typeof(bool)) { in OrElse()
1283 return new LogicalBinaryExpression(ExpressionType.OrElse, left, right); in OrElse()
1284 } else if (left.Type == typeof(bool?)) { in OrElse()
1285 … return new SimpleBinaryExpression(ExpressionType.OrElse, left, right, left.Type); in OrElse()
1288 …method = GetUserDefinedBinaryOperator(ExpressionType.OrElse, left.Type, right.Type, "op_BitwiseOr"… in OrElse()
1290 … ValidateUserDefinedConditionalLogicOperator(ExpressionType.OrElse, left.Type, right.Type, method); in OrElse()
1291 …rnType = (TypeUtils.IsNullableType(left.Type) && method.ReturnType == TypeUtils.GetNonNullableType… in OrElse()
1292 … return new MethodBinaryExpression(ExpressionType.OrElse, left, right, returnType, method); in OrElse()
1294 throw Error.BinaryOperatorNotDefined(ExpressionType.OrElse, left.Type, right.Type); in OrElse()
1296 … ValidateUserDefinedConditionalLogicOperator(ExpressionType.OrElse, left.Type, right.Type, method); in OrElse()
1297 …rnType = (TypeUtils.IsNullableType(left.Type) && method.ReturnType == TypeUtils.GetNonNullableType… in OrElse()
1298 … return new MethodBinaryExpression(ExpressionType.OrElse, left, right, returnType, method); in OrElse()
1312 public static BinaryExpression Coalesce(Expression left, Expression right) { in Coalesce() argument
1313 return Coalesce(left, right, null); in Coalesce()
1325 …public static BinaryExpression Coalesce(Expression left, Expression right, LambdaExpression conver… in Coalesce() argument
1326 RequiresCanRead(left, "left"); in Coalesce()
1330 Type resultType = ValidateCoalesceArgTypes(left.Type, right.Type); in Coalesce()
1331 return new SimpleBinaryExpression(ExpressionType.Coalesce, left, right, resultType); in Coalesce()
1334 if (left.Type.IsValueType && !TypeUtils.IsNullableType(left.Type)) { in Coalesce()
1358 if (!ParameterIsAssignable(pms[0], TypeUtils.GetNonNullableType(left.Type)) && in Coalesce()
1359 !ParameterIsAssignable(pms[0], left.Type)) { in Coalesce()
1362 return new CoalesceConversionBinaryExpression(left, right, conversion); in Coalesce()
1366 private static Type ValidateCoalesceArgTypes(Type left, Type right) { in ValidateCoalesceArgTypes() argument
1367 Type leftStripped = TypeUtils.GetNonNullableType(left); in ValidateCoalesceArgTypes()
1368 if (left.IsValueType && !TypeUtils.IsNullableType(left)) { in ValidateCoalesceArgTypes()
1370 …} else if (TypeUtils.IsNullableType(left) && TypeUtils.IsImplicitlyConvertible(right, leftStripped… in ValidateCoalesceArgTypes()
1372 } else if (TypeUtils.IsImplicitlyConvertible(right, left)) { in ValidateCoalesceArgTypes()
1373 return left; in ValidateCoalesceArgTypes()
1395 public static BinaryExpression Add(Expression left, Expression right) { in Add() argument
1396 return Add(left, right, null); in Add()
1408 public static BinaryExpression Add(Expression left, Expression right, MethodInfo method) { in Add() argument
1409 RequiresCanRead(left, "left"); in Add()
1412 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in Add()
1413 return new SimpleBinaryExpression(ExpressionType.Add, left, right, left.Type); in Add()
1415 … return GetUserDefinedBinaryOperatorOrThrow(ExpressionType.Add, "op_Addition", left, right, true); in Add()
1417 return GetMethodBasedBinaryOperator(ExpressionType.Add, left, right, method, true); in Add()
1428 public static BinaryExpression AddAssign(Expression left, Expression right) { in AddAssign() argument
1429 return AddAssign(left, right, null, null); in AddAssign()
1441 … public static BinaryExpression AddAssign(Expression left, Expression right, MethodInfo method) { in AddAssign() argument
1442 return AddAssign(left, right, method, null); in AddAssign()
1457 …public static BinaryExpression AddAssign(Expression left, Expression right, MethodInfo method, Lam… in AddAssign() argument
1458 RequiresCanRead(left, "left"); in AddAssign()
1459 RequiresCanWrite(left, "left"); in AddAssign()
1462 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in AddAssign()
1467 … return new SimpleBinaryExpression(ExpressionType.AddAssign, left, right, left.Type); in AddAssign()
1469 …UserDefinedAssignOperatorOrThrow(ExpressionType.AddAssign, "op_Addition", left, right, conversion,… in AddAssign()
1471 …return GetMethodBasedAssignOperator(ExpressionType.AddAssign, left, right, method, conversion, tru… in AddAssign()
1474 … ValidateOpAssignConversionLambda(LambdaExpression conversion, Expression left, MethodInfo method,… in ValidateOpAssignConversionLambda() argument
1483 if (!TypeUtils.AreEquivalent(mi.ReturnType, left.Type)) { in ValidateOpAssignConversionLambda()
1504 public static BinaryExpression AddAssignChecked(Expression left, Expression right) { in AddAssignChecked() argument
1505 return AddAssignChecked(left, right, null); in AddAssignChecked()
1517 …public static BinaryExpression AddAssignChecked(Expression left, Expression right, MethodInfo meth… in AddAssignChecked() argument
1518 return AddAssignChecked(left, right, method, null); in AddAssignChecked()
1532 …public static BinaryExpression AddAssignChecked(Expression left, Expression right, MethodInfo meth… in AddAssignChecked() argument
1533 RequiresCanRead(left, "left"); in AddAssignChecked()
1534 RequiresCanWrite(left, "left"); in AddAssignChecked()
1538 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in AddAssignChecked()
1543 … return new SimpleBinaryExpression(ExpressionType.AddAssignChecked, left, right, left.Type); in AddAssignChecked()
1545 …inedAssignOperatorOrThrow(ExpressionType.AddAssignChecked, "op_Addition", left, right, conversion,… in AddAssignChecked()
1547 …return GetMethodBasedAssignOperator(ExpressionType.AddAssignChecked, left, right, method, conversi… in AddAssignChecked()
1558 public static BinaryExpression AddChecked(Expression left, Expression right) { in AddChecked() argument
1559 return AddChecked(left, right, null); in AddChecked()
1571 … public static BinaryExpression AddChecked(Expression left, Expression right, MethodInfo method) { in AddChecked() argument
1572 RequiresCanRead(left, "left"); in AddChecked()
1575 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in AddChecked()
1576 … return new SimpleBinaryExpression(ExpressionType.AddChecked, left, right, left.Type); in AddChecked()
1578 … GetUserDefinedBinaryOperatorOrThrow(ExpressionType.AddChecked, "op_Addition", left, right, false); in AddChecked()
1580 … return GetMethodBasedBinaryOperator(ExpressionType.AddChecked, left, right, method, true); in AddChecked()
1591 public static BinaryExpression Subtract(Expression left, Expression right) { in Subtract() argument
1592 return Subtract(left, right, null); in Subtract()
1604 … public static BinaryExpression Subtract(Expression left, Expression right, MethodInfo method) { in Subtract() argument
1605 RequiresCanRead(left, "left"); in Subtract()
1608 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in Subtract()
1609 … return new SimpleBinaryExpression(ExpressionType.Subtract, left, right, left.Type); in Subtract()
1611 … GetUserDefinedBinaryOperatorOrThrow(ExpressionType.Subtract, "op_Subtraction", left, right, true); in Subtract()
1613 return GetMethodBasedBinaryOperator(ExpressionType.Subtract, left, right, method, true); in Subtract()
1624 public static BinaryExpression SubtractAssign(Expression left, Expression right) { in SubtractAssign() argument
1625 return SubtractAssign(left, right, null, null); in SubtractAssign()
1637 …public static BinaryExpression SubtractAssign(Expression left, Expression right, MethodInfo method… in SubtractAssign() argument
1638 return SubtractAssign(left, right, method, null); in SubtractAssign()
1652 …public static BinaryExpression SubtractAssign(Expression left, Expression right, MethodInfo method… in SubtractAssign() argument
1653 RequiresCanRead(left, "left"); in SubtractAssign()
1654 RequiresCanWrite(left, "left"); in SubtractAssign()
1657 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in SubtractAssign()
1662 … return new SimpleBinaryExpression(ExpressionType.SubtractAssign, left, right, left.Type); in SubtractAssign()
1664 …nedAssignOperatorOrThrow(ExpressionType.SubtractAssign, "op_Subtraction", left, right, conversion,… in SubtractAssign()
1666 …return GetMethodBasedAssignOperator(ExpressionType.SubtractAssign, left, right, method, conversion… in SubtractAssign()
1677 public static BinaryExpression SubtractAssignChecked(Expression left, Expression right) { in SubtractAssignChecked() argument
1678 return SubtractAssignChecked(left, right, null); in SubtractAssignChecked()
1690 …public static BinaryExpression SubtractAssignChecked(Expression left, Expression right, MethodInfo… in SubtractAssignChecked() argument
1691 return SubtractAssignChecked(left, right, method, null); in SubtractAssignChecked()
1705 …public static BinaryExpression SubtractAssignChecked(Expression left, Expression right, MethodInfo… in SubtractAssignChecked() argument
1706 RequiresCanRead(left, "left"); in SubtractAssignChecked()
1707 RequiresCanWrite(left, "left"); in SubtractAssignChecked()
1710 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in SubtractAssignChecked()
1715 … return new SimpleBinaryExpression(ExpressionType.SubtractAssignChecked, left, right, left.Type); in SubtractAssignChecked()
1717 …gnOperatorOrThrow(ExpressionType.SubtractAssignChecked, "op_Subtraction", left, right, conversion,… in SubtractAssignChecked()
1719 …return GetMethodBasedAssignOperator(ExpressionType.SubtractAssignChecked, left, right, method, con… in SubtractAssignChecked()
1730 public static BinaryExpression SubtractChecked(Expression left, Expression right) { in SubtractChecked() argument
1731 return SubtractChecked(left, right, null); in SubtractChecked()
1743 …public static BinaryExpression SubtractChecked(Expression left, Expression right, MethodInfo metho… in SubtractChecked() argument
1744 RequiresCanRead(left, "left"); in SubtractChecked()
1747 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in SubtractChecked()
1748 … return new SimpleBinaryExpression(ExpressionType.SubtractChecked, left, right, left.Type); in SubtractChecked()
1750 …rDefinedBinaryOperatorOrThrow(ExpressionType.SubtractChecked, "op_Subtraction", left, right, true); in SubtractChecked()
1752 … return GetMethodBasedBinaryOperator(ExpressionType.SubtractChecked, left, right, method, true); in SubtractChecked()
1763 public static BinaryExpression Divide(Expression left, Expression right) { in Divide() argument
1764 return Divide(left, right, null); in Divide()
1776 … public static BinaryExpression Divide(Expression left, Expression right, MethodInfo method) { in Divide() argument
1777 RequiresCanRead(left, "left"); in Divide()
1780 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in Divide()
1781 … return new SimpleBinaryExpression(ExpressionType.Divide, left, right, left.Type); in Divide()
1783 …eturn GetUserDefinedBinaryOperatorOrThrow(ExpressionType.Divide, "op_Division", left, right, true); in Divide()
1785 return GetMethodBasedBinaryOperator(ExpressionType.Divide, left, right, method, true); in Divide()
1796 public static BinaryExpression DivideAssign(Expression left, Expression right) { in DivideAssign() argument
1797 return DivideAssign(left, right, null, null); in DivideAssign()
1809 …public static BinaryExpression DivideAssign(Expression left, Expression right, MethodInfo method) { in DivideAssign() argument
1810 return DivideAssign(left, right, method, null); in DivideAssign()
1824 …public static BinaryExpression DivideAssign(Expression left, Expression right, MethodInfo method, … in DivideAssign() argument
1825 RequiresCanRead(left, "left"); in DivideAssign()
1826 RequiresCanWrite(left, "left"); in DivideAssign()
1829 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in DivideAssign()
1834 … return new SimpleBinaryExpression(ExpressionType.DivideAssign, left, right, left.Type); in DivideAssign()
1836 …rDefinedAssignOperatorOrThrow(ExpressionType.DivideAssign, "op_Division", left, right, conversion,… in DivideAssign()
1838 …return GetMethodBasedAssignOperator(ExpressionType.DivideAssign, left, right, method, conversion, … in DivideAssign()
1849 public static BinaryExpression Modulo(Expression left, Expression right) { in Modulo() argument
1850 return Modulo(left, right, null); in Modulo()
1862 … public static BinaryExpression Modulo(Expression left, Expression right, MethodInfo method) { in Modulo() argument
1863 RequiresCanRead(left, "left"); in Modulo()
1866 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in Modulo()
1867 … return new SimpleBinaryExpression(ExpressionType.Modulo, left, right, left.Type); in Modulo()
1869 …return GetUserDefinedBinaryOperatorOrThrow(ExpressionType.Modulo, "op_Modulus", left, right, true); in Modulo()
1871 return GetMethodBasedBinaryOperator(ExpressionType.Modulo, left, right, method, true); in Modulo()
1882 public static BinaryExpression ModuloAssign(Expression left, Expression right) { in ModuloAssign() argument
1883 return ModuloAssign(left, right, null, null); in ModuloAssign()
1895 …public static BinaryExpression ModuloAssign(Expression left, Expression right, MethodInfo method) { in ModuloAssign() argument
1896 return ModuloAssign(left, right, method, null); in ModuloAssign()
1910 …public static BinaryExpression ModuloAssign(Expression left, Expression right, MethodInfo method, … in ModuloAssign() argument
1911 RequiresCanRead(left, "left"); in ModuloAssign()
1912 RequiresCanWrite(left, "left"); in ModuloAssign()
1915 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in ModuloAssign()
1920 … return new SimpleBinaryExpression(ExpressionType.ModuloAssign, left, right, left.Type); in ModuloAssign()
1922 …erDefinedAssignOperatorOrThrow(ExpressionType.ModuloAssign, "op_Modulus", left, right, conversion,… in ModuloAssign()
1924 …return GetMethodBasedAssignOperator(ExpressionType.ModuloAssign, left, right, method, conversion, … in ModuloAssign()
1935 public static BinaryExpression Multiply(Expression left, Expression right) { in Multiply() argument
1936 return Multiply(left, right, null); in Multiply()
1948 … public static BinaryExpression Multiply(Expression left, Expression right, MethodInfo method) { in Multiply() argument
1949 RequiresCanRead(left, "left"); in Multiply()
1952 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in Multiply()
1953 … return new SimpleBinaryExpression(ExpressionType.Multiply, left, right, left.Type); in Multiply()
1955 …urn GetUserDefinedBinaryOperatorOrThrow(ExpressionType.Multiply, "op_Multiply", left, right, true); in Multiply()
1957 return GetMethodBasedBinaryOperator(ExpressionType.Multiply, left, right, method, true); in Multiply()
1968 public static BinaryExpression MultiplyAssign(Expression left, Expression right) { in MultiplyAssign() argument
1969 return MultiplyAssign(left, right, null, null); in MultiplyAssign()
1981 …public static BinaryExpression MultiplyAssign(Expression left, Expression right, MethodInfo method… in MultiplyAssign() argument
1982 return MultiplyAssign(left, right, method, null); in MultiplyAssign()
1996 …public static BinaryExpression MultiplyAssign(Expression left, Expression right, MethodInfo method… in MultiplyAssign() argument
1997 RequiresCanRead(left, "left"); in MultiplyAssign()
1998 RequiresCanWrite(left, "left"); in MultiplyAssign()
2001 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in MultiplyAssign()
2006 … return new SimpleBinaryExpression(ExpressionType.MultiplyAssign, left, right, left.Type); in MultiplyAssign()
2008 …efinedAssignOperatorOrThrow(ExpressionType.MultiplyAssign, "op_Multiply", left, right, conversion,… in MultiplyAssign()
2010 …return GetMethodBasedAssignOperator(ExpressionType.MultiplyAssign, left, right, method, conversion… in MultiplyAssign()
2021 public static BinaryExpression MultiplyAssignChecked(Expression left, Expression right) { in MultiplyAssignChecked() argument
2022 return MultiplyAssignChecked(left, right, null); in MultiplyAssignChecked()
2034 …public static BinaryExpression MultiplyAssignChecked(Expression left, Expression right, MethodInfo… in MultiplyAssignChecked() argument
2035 return MultiplyAssignChecked(left, right, method, null); in MultiplyAssignChecked()
2049 …public static BinaryExpression MultiplyAssignChecked(Expression left, Expression right, MethodInfo… in MultiplyAssignChecked() argument
2050 RequiresCanRead(left, "left"); in MultiplyAssignChecked()
2051 RequiresCanWrite(left, "left"); in MultiplyAssignChecked()
2054 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in MultiplyAssignChecked()
2059 … return new SimpleBinaryExpression(ExpressionType.MultiplyAssignChecked, left, right, left.Type); in MultiplyAssignChecked()
2061 …ssignOperatorOrThrow(ExpressionType.MultiplyAssignChecked, "op_Multiply", left, right, conversion,… in MultiplyAssignChecked()
2063 …return GetMethodBasedAssignOperator(ExpressionType.MultiplyAssignChecked, left, right, method, con… in MultiplyAssignChecked()
2074 public static BinaryExpression MultiplyChecked(Expression left, Expression right) { in MultiplyChecked() argument
2075 return MultiplyChecked(left, right, null); in MultiplyChecked()
2087 …public static BinaryExpression MultiplyChecked(Expression left, Expression right, MethodInfo metho… in MultiplyChecked() argument
2088 RequiresCanRead(left, "left"); in MultiplyChecked()
2091 if (left.Type == right.Type && TypeUtils.IsArithmetic(left.Type)) { in MultiplyChecked()
2092 … return new SimpleBinaryExpression(ExpressionType.MultiplyChecked, left, right, left.Type); in MultiplyChecked()
2094 …UserDefinedBinaryOperatorOrThrow(ExpressionType.MultiplyChecked, "op_Multiply", left, right, true); in MultiplyChecked()
2096 … return GetMethodBasedBinaryOperator(ExpressionType.MultiplyChecked, left, right, method, true); in MultiplyChecked()
2099 private static bool IsSimpleShift(Type left, Type right) { in IsSimpleShift() argument
2100 return TypeUtils.IsInteger(left) in IsSimpleShift()
2104 private static Type GetResultTypeOfShift(Type left, Type right) { in GetResultTypeOfShift() argument
2105 if (!left.IsNullableType() && right.IsNullableType()) { in GetResultTypeOfShift()
2107 return typeof(Nullable<>).MakeGenericType(left); in GetResultTypeOfShift()
2109 return left; in GetResultTypeOfShift()
2120 public static BinaryExpression LeftShift(Expression left, Expression right) { in LeftShift() argument
2121 return LeftShift(left, right, null); in LeftShift()
2133 … public static BinaryExpression LeftShift(Expression left, Expression right, MethodInfo method) { in LeftShift() argument
2134 RequiresCanRead(left, "left"); in LeftShift()
2137 if (IsSimpleShift(left.Type, right.Type)) { in LeftShift()
2138 Type resultType = GetResultTypeOfShift(left.Type, right.Type); in LeftShift()
2139 … return new SimpleBinaryExpression(ExpressionType.LeftShift, left, right, resultType); in LeftShift()
2141 …n GetUserDefinedBinaryOperatorOrThrow(ExpressionType.LeftShift, "op_LeftShift", left, right, true); in LeftShift()
2143 … return GetMethodBasedBinaryOperator(ExpressionType.LeftShift, left, right, method, true); in LeftShift()
2154 public static BinaryExpression LeftShiftAssign(Expression left, Expression right) { in LeftShiftAssign() argument
2155 return LeftShiftAssign(left, right, null, null); in LeftShiftAssign()
2167 …public static BinaryExpression LeftShiftAssign(Expression left, Expression right, MethodInfo metho… in LeftShiftAssign() argument
2168 return LeftShiftAssign(left, right, method, null); in LeftShiftAssign()
2182 …public static BinaryExpression LeftShiftAssign(Expression left, Expression right, MethodInfo metho… in LeftShiftAssign() argument
2183 RequiresCanRead(left, "left"); in LeftShiftAssign()
2184 RequiresCanWrite(left, "left"); in LeftShiftAssign()
2187 if (IsSimpleShift(left.Type, right.Type)) { in LeftShiftAssign()
2192 Type resultType = GetResultTypeOfShift(left.Type, right.Type); in LeftShiftAssign()
2193 … return new SimpleBinaryExpression(ExpressionType.LeftShiftAssign, left, right, resultType); in LeftShiftAssign()
2195 …inedAssignOperatorOrThrow(ExpressionType.LeftShiftAssign, "op_LeftShift", left, right, conversion,… in LeftShiftAssign()
2197 …return GetMethodBasedAssignOperator(ExpressionType.LeftShiftAssign, left, right, method, conversio… in LeftShiftAssign()
2208 public static BinaryExpression RightShift(Expression left, Expression right) { in RightShift() argument
2209 return RightShift(left, right, null); in RightShift()
2221 … public static BinaryExpression RightShift(Expression left, Expression right, MethodInfo method) { in RightShift() argument
2222 RequiresCanRead(left, "left"); in RightShift()
2225 if (IsSimpleShift(left.Type, right.Type)) { in RightShift()
2226 Type resultType = GetResultTypeOfShift(left.Type, right.Type); in RightShift()
2227 … return new SimpleBinaryExpression(ExpressionType.RightShift, left, right, resultType); in RightShift()
2229 …GetUserDefinedBinaryOperatorOrThrow(ExpressionType.RightShift, "op_RightShift", left, right, true); in RightShift()
2231 … return GetMethodBasedBinaryOperator(ExpressionType.RightShift, left, right, method, true); in RightShift()
2242 public static BinaryExpression RightShiftAssign(Expression left, Expression right) { in RightShiftAssign() argument
2243 return RightShiftAssign(left, right, null, null); in RightShiftAssign()
2255 …public static BinaryExpression RightShiftAssign(Expression left, Expression right, MethodInfo meth… in RightShiftAssign() argument
2256 return RightShiftAssign(left, right, method, null); in RightShiftAssign()
2270 …public static BinaryExpression RightShiftAssign(Expression left, Expression right, MethodInfo meth… in RightShiftAssign() argument
2271 RequiresCanRead(left, "left"); in RightShiftAssign()
2272 RequiresCanWrite(left, "left"); in RightShiftAssign()
2275 if (IsSimpleShift(left.Type, right.Type)) { in RightShiftAssign()
2280 Type resultType = GetResultTypeOfShift(left.Type, right.Type); in RightShiftAssign()
2281 … return new SimpleBinaryExpression(ExpressionType.RightShiftAssign, left, right, resultType); in RightShiftAssign()
2283 …edAssignOperatorOrThrow(ExpressionType.RightShiftAssign, "op_RightShift", left, right, conversion,… in RightShiftAssign()
2285 …return GetMethodBasedAssignOperator(ExpressionType.RightShiftAssign, left, right, method, conversi… in RightShiftAssign()
2296 public static BinaryExpression And(Expression left, Expression right) { in And() argument
2297 return And(left, right, null); in And()
2309 public static BinaryExpression And(Expression left, Expression right, MethodInfo method) { in And() argument
2310 RequiresCanRead(left, "left"); in And()
2313 if (left.Type == right.Type && TypeUtils.IsIntegerOrBool(left.Type)) { in And()
2314 return new SimpleBinaryExpression(ExpressionType.And, left, right, left.Type); in And()
2316 …return GetUserDefinedBinaryOperatorOrThrow(ExpressionType.And, "op_BitwiseAnd", left, right, true); in And()
2318 return GetMethodBasedBinaryOperator(ExpressionType.And, left, right, method, true); in And()
2329 public static BinaryExpression AndAssign(Expression left, Expression right) { in AndAssign() argument
2330 return AndAssign(left, right, null, null); in AndAssign()
2342 … public static BinaryExpression AndAssign(Expression left, Expression right, MethodInfo method) { in AndAssign() argument
2343 return AndAssign(left, right, method, null); in AndAssign()
2357 …public static BinaryExpression AndAssign(Expression left, Expression right, MethodInfo method, Lam… in AndAssign() argument
2358 RequiresCanRead(left, "left"); in AndAssign()
2359 RequiresCanWrite(left, "left"); in AndAssign()
2362 if (left.Type == right.Type && TypeUtils.IsIntegerOrBool(left.Type)) { in AndAssign()
2367 … return new SimpleBinaryExpression(ExpressionType.AndAssign, left, right, left.Type); in AndAssign()
2369 …erDefinedAssignOperatorOrThrow(ExpressionType.AndAssign, "op_BitwiseAnd", left, right, conversion,… in AndAssign()
2371 …return GetMethodBasedAssignOperator(ExpressionType.AndAssign, left, right, method, conversion, tru… in AndAssign()
2382 public static BinaryExpression Or(Expression left, Expression right) { in Or() argument
2383 return Or(left, right, null); in Or()
2395 public static BinaryExpression Or(Expression left, Expression right, MethodInfo method) { in Or() argument
2396 RequiresCanRead(left, "left"); in Or()
2399 if (left.Type == right.Type && TypeUtils.IsIntegerOrBool(left.Type)) { in Or()
2400 return new SimpleBinaryExpression(ExpressionType.Or, left, right, left.Type); in Or()
2402 … return GetUserDefinedBinaryOperatorOrThrow(ExpressionType.Or, "op_BitwiseOr", left, right, true); in Or()
2404 return GetMethodBasedBinaryOperator(ExpressionType.Or, left, right, method, true); in Or()
2415 public static BinaryExpression OrAssign(Expression left, Expression right) { in OrAssign() argument
2416 return OrAssign(left, right, null, null); in OrAssign()
2428 … public static BinaryExpression OrAssign(Expression left, Expression right, MethodInfo method) { in OrAssign() argument
2429 return OrAssign(left, right, method, null); in OrAssign()
2443 …public static BinaryExpression OrAssign(Expression left, Expression right, MethodInfo method, Lamb… in OrAssign() argument
2444 RequiresCanRead(left, "left"); in OrAssign()
2445 RequiresCanWrite(left, "left"); in OrAssign()
2448 if (left.Type == right.Type && TypeUtils.IsIntegerOrBool(left.Type)) { in OrAssign()
2453 … return new SimpleBinaryExpression(ExpressionType.OrAssign, left, right, left.Type); in OrAssign()
2455 …UserDefinedAssignOperatorOrThrow(ExpressionType.OrAssign, "op_BitwiseOr", left, right, conversion,… in OrAssign()
2457 …return GetMethodBasedAssignOperator(ExpressionType.OrAssign, left, right, method, conversion, true… in OrAssign()
2467 public static BinaryExpression ExclusiveOr(Expression left, Expression right) { in ExclusiveOr() argument
2468 return ExclusiveOr(left, right, null); in ExclusiveOr()
2480 … public static BinaryExpression ExclusiveOr(Expression left, Expression right, MethodInfo method) { in ExclusiveOr() argument
2481 RequiresCanRead(left, "left"); in ExclusiveOr()
2484 if (left.Type == right.Type && TypeUtils.IsIntegerOrBool(left.Type)) { in ExclusiveOr()
2485 … return new SimpleBinaryExpression(ExpressionType.ExclusiveOr, left, right, left.Type); in ExclusiveOr()
2487 …tUserDefinedBinaryOperatorOrThrow(ExpressionType.ExclusiveOr, "op_ExclusiveOr", left, right, true); in ExclusiveOr()
2489 … return GetMethodBasedBinaryOperator(ExpressionType.ExclusiveOr, left, right, method, true); in ExclusiveOr()
2499 public static BinaryExpression ExclusiveOrAssign(Expression left, Expression right) { in ExclusiveOrAssign() argument
2500 return ExclusiveOrAssign(left, right, null, null); in ExclusiveOrAssign()
2512 …public static BinaryExpression ExclusiveOrAssign(Expression left, Expression right, MethodInfo met… in ExclusiveOrAssign() argument
2513 return ExclusiveOrAssign(left, right, method, null); in ExclusiveOrAssign()
2527 …public static BinaryExpression ExclusiveOrAssign(Expression left, Expression right, MethodInfo met… in ExclusiveOrAssign() argument
2528 RequiresCanRead(left, "left"); in ExclusiveOrAssign()
2529 RequiresCanWrite(left, "left"); in ExclusiveOrAssign()
2532 if (left.Type == right.Type && TypeUtils.IsIntegerOrBool(left.Type)) { in ExclusiveOrAssign()
2537 … return new SimpleBinaryExpression(ExpressionType.ExclusiveOrAssign, left, right, left.Type); in ExclusiveOrAssign()
2539 …AssignOperatorOrThrow(ExpressionType.ExclusiveOrAssign, "op_ExclusiveOr", left, right, conversion,… in ExclusiveOrAssign()
2541 …return GetMethodBasedAssignOperator(ExpressionType.ExclusiveOrAssign, left, right, method, convers… in ExclusiveOrAssign()
2551 public static BinaryExpression Power(Expression left, Expression right) { in Power() argument
2552 return Power(left, right, null); in Power()
2564 public static BinaryExpression Power(Expression left, Expression right, MethodInfo method) { in Power() argument
2565 RequiresCanRead(left, "left"); in Power()
2571 … throw Error.BinaryOperatorNotDefined(ExpressionType.Power, left.Type, right.Type); in Power()
2574 return GetMethodBasedBinaryOperator(ExpressionType.Power, left, right, method, true); in Power()
2585 public static BinaryExpression PowerAssign(Expression left, Expression right) { in PowerAssign() argument
2586 return PowerAssign(left, right, null, null); in PowerAssign()
2598 … public static BinaryExpression PowerAssign(Expression left, Expression right, MethodInfo method) { in PowerAssign() argument
2599 return PowerAssign(left, right, method, null); in PowerAssign()
2613 …public static BinaryExpression PowerAssign(Expression left, Expression right, MethodInfo method, L… in PowerAssign() argument
2614 RequiresCanRead(left, "left"); in PowerAssign()
2615 RequiresCanWrite(left, "left"); in PowerAssign()
2621 … throw Error.BinaryOperatorNotDefined(ExpressionType.PowerAssign, left.Type, right.Type); in PowerAssign()
2624 …return GetMethodBasedAssignOperator(ExpressionType.PowerAssign, left, right, method, conversion, t… in PowerAssign()