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

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

private ExpandSimpleIncrementDecrement ( UnaryExpression node ) : Expression
node Boo.Lang.Compiler.Ast.UnaryExpression
Результат Boo.Lang.Compiler.Ast.Expression
        Expression ExpandSimpleIncrementDecrement(UnaryExpression node)
        {
            var oldValue = DeclareOldValueTempIfNeeded(node);
            var type = GetExpressionType(node.Operand);

            var addition = CodeBuilder.CreateBoundBinaryExpression(
                type,
                GetEquivalentBinaryOperator(node.Operator),
                CloneOrAssignToTemp(oldValue, node.Operand),
                CodeBuilder.CreateIntegerLiteral(1));

            var assign = CodeBuilder.CreateAssignment(
                node.LexicalInfo,
                node.Operand,
                addition);

            // Resolve operator overloads if any
            BindArithmeticOperator(addition);

            return oldValue == null
                ? (Expression) assign
                : CodeBuilder.CreateEvalInvocation(
                    node.LexicalInfo,
                    assign,
                    CodeBuilder.CreateReference(oldValue));
        }
ProcessMethodBodies