public virtual ISqlNode VisitPrefixOperation(SqlPrefixOperationNode n)
        {
            var op    = Visit(n.Operator) as SqlOperatorNode;
            var right = Visit(n.Right);

            return(n.Update(op, right));
        }
        public void Optimize_PositiveNumber()
        {
            var ast = new SqlPrefixOperationNode
            {
                Operator = new SqlOperatorNode("+"),
                Right    = new SqlNumberNode(5)
            };

            var target = new ExpressionOptimizeVisitor();
            var result = target.Visit(ast);

            result.Should().MatchAst(new SqlNumberNode(5));
        }
Exemple #3
0
        public ISqlNode VisitPrefixOperation(SqlPrefixOperationNode n)
        {
            Append(n.Operator, " ");
            if (n.Right is SqlInfixOperationNode)
            {
                Append("(", n.Right, ")");
            }
            else
            {
                Visit(n.Right);
            }

            return(n);
        }
        public override ISqlNode VisitPrefixOperation(SqlPrefixOperationNode n)
        {
            // First make sure we visit the children nodes and reduce those as much as possible
            n = base.VisitPrefixOperation(n) as SqlPrefixOperationNode;
            if (n.Right is SqlNumberNode number)
            {
                if (n.Operator.Operator == "-")
                {
                    return(number.MakeNegative());
                }
                if (n.Operator.Operator == "+")
                {
                    return(n.Right);
                }
                if (n.Operator.Operator == "~")
                {
                    return(number.BitwiseInvert());
                }
            }

            return(n);
        }
Exemple #5
0
 public override ISqlNode VisitPrefixOperation(SqlPrefixOperationNode n)
 {
     ConfirmExpressionOperands(n.Right);
     return(base.VisitPrefixOperation(n));
 }
 public override ISqlNode VisitPrefixOperation(SqlPrefixOperationNode n)
 {
     _result.AssertNotNull(n, nameof(n.Operator), n.Operator);
     _result.AssertNotNull(n, nameof(n.Right), n.Right);
     return(base.VisitPrefixOperation(n));
 }