bool IsEnumOperation(BinaryExpression node)
{
switch (node.Operator)
{
case BinaryOperatorType.Addition:
case BinaryOperatorType.Subtraction:
case BinaryOperatorType.BitwiseAnd:
case BinaryOperatorType.BitwiseOr:
case BinaryOperatorType.ExclusiveOr:
IType lhs = GetExpressionType(node.Left);
IType rhs = GetExpressionType(node.Right);
if (lhs.IsEnum) return IsValidEnumOperand(lhs, rhs);
if (rhs.IsEnum) return IsValidEnumOperand(rhs, lhs);
break;
}
return false;
}