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

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

private ResolveOperator ( BinaryExpression node ) : bool
node BinaryExpression
Результат bool
        bool ResolveOperator(BinaryExpression node)
        {
            MethodInvocationExpression mie = new MethodInvocationExpression(node.LexicalInfo);
            mie.Arguments.Add(node.Left.CloneNode());
            mie.Arguments.Add(node.Right.CloneNode());

            string operatorName = AstUtil.GetMethodNameForOperator(node.Operator);
            IType lhs = GetExpressionType(node.Left);
            if (ResolveOperator(node, lhs, operatorName, mie))
            {
                return true;
            }

            IType rhs = GetExpressionType(node.Right);
            if (ResolveOperator(node, rhs, operatorName, mie))
            {
                return true;
            }

            //pointer arithmetic
            if (lhs.IsPointer && TypeSystemServices.IsIntegerNumber(rhs))
            {
                switch (node.Operator)
                {
                    case BinaryOperatorType.Addition:
                    case BinaryOperatorType.Subtraction:
                        return true;
                }
            }

            return ResolveRuntimeOperator(node, operatorName, mie);
        }

Same methods

ProcessMethodBodies::ResolveOperator ( Expression node, IType type, string operatorName, MethodInvocationExpression mie ) : bool
ProcessMethodBodies::ResolveOperator ( UnaryExpression node ) : bool
ProcessMethodBodies