protected override Expression VisitBinary()

in src/Epam.GraphQL/Helpers/ExpressionRewriter.cs [34:78]


            protected override Expression VisitBinary(BinaryExpression node)
            {
                if (node.NodeType == ExpressionType.AndAlso)
                {
                    var left = Rewrite(node.Left);
                    var right = Rewrite(node.Right);

                    if (left.IsFalse() || right.IsFalse())
                    {
                        return Expression.Constant(false);
                    }

                    if (left.IsTrue())
                    {
                        return right;
                    }

                    if (right.IsTrue())
                    {
                        return left;
                    }
                }
                else if (node.NodeType == ExpressionType.OrElse)
                {
                    var left = Rewrite(node.Left);
                    var right = Rewrite(node.Right);

                    if (left.IsTrue() || right.IsTrue())
                    {
                        return Expression.Constant(true);
                    }

                    if (left.IsFalse())
                    {
                        return right;
                    }

                    if (right.IsFalse())
                    {
                        return left;
                    }
                }

                return base.VisitBinary(node);
            }