private static ExpressionType GetBinaryOpFromAssignmentOp(ExpressionType op)
{
Debug.Assert(IsOpAssignment(op));
switch (op)
{
case ExpressionType.AddAssign:
return ExpressionType.Add;
case ExpressionType.AddAssignChecked:
return ExpressionType.AddChecked;
case ExpressionType.SubtractAssign:
return ExpressionType.Subtract;
case ExpressionType.SubtractAssignChecked:
return ExpressionType.SubtractChecked;
case ExpressionType.MultiplyAssign:
return ExpressionType.Multiply;
case ExpressionType.MultiplyAssignChecked:
return ExpressionType.MultiplyChecked;
case ExpressionType.DivideAssign:
return ExpressionType.Divide;
case ExpressionType.ModuloAssign:
return ExpressionType.Modulo;
case ExpressionType.PowerAssign:
return ExpressionType.Power;
case ExpressionType.AndAssign:
return ExpressionType.And;
case ExpressionType.OrAssign:
return ExpressionType.Or;
case ExpressionType.RightShiftAssign:
return ExpressionType.RightShift;
case ExpressionType.LeftShiftAssign:
return ExpressionType.LeftShift;
case ExpressionType.ExclusiveOrAssign:
return ExpressionType.ExclusiveOr;
default:
throw ContractUtils.Unreachable;
}
}