Boo.Lang.Compiler.Steps.ProcessMethodBodies.BindEnumOperation C# (CSharp) Метод

BindEnumOperation() приватный Метод

private BindEnumOperation ( Boo.Lang.Compiler.Ast.BinaryExpression node ) : void
node Boo.Lang.Compiler.Ast.BinaryExpression
Результат void
        void BindEnumOperation(BinaryExpression node)
        {
            IType lhs = GetExpressionType(node.Left);
            IType rhs = GetExpressionType(node.Right);
            switch(node.Operator)
            {
                case BinaryOperatorType.Addition:
                    if (lhs.IsEnum != rhs.IsEnum)
                    {
                        BindExpressionType(node, lhs.IsEnum ? lhs : rhs);
                        return;
                    }
                    break;
                case BinaryOperatorType.Subtraction:
                    if (lhs == rhs)
                    {
                        BindExpressionType(node, TypeSystemServices.IntType);
                        return;
                    }
                    else if (lhs.IsEnum && !rhs.IsEnum)
                    {
                        BindExpressionType(node, lhs);
                        return;
                    }
                    break;
                case BinaryOperatorType.BitwiseAnd:
                case BinaryOperatorType.BitwiseOr:
                case BinaryOperatorType.ExclusiveOr:
                    if (lhs == rhs)
                    {
                        BindExpressionType(node, lhs);
                        return;
                    }
                    break;
            }
            if (!ResolveOperator(node))
            {
                InvalidOperatorForTypes(node);
            }
        }
ProcessMethodBodies