Example #1
0
        // simplifies equality expression
        //    A.Equal(B) => (A, B)
        //    A.NotEqual(B) => (A, B, false)
        internal static Expression EqualitySimplifier(ScalarArgument argument1, ScalarArgument argument2, bool equality = true)
        {
            argument1 = argument1 == null ? Designer.Null : argument1;

            Expression expression = null;

            if (argument2 == null ||
                (argument2.Original is Value && (Value)argument2.Original == Designer.Null))
            {
                if (equality)
                {
                    expression = argument1.IsNull();
                }
                else
                {
                    expression = argument1.IsNotNull();
                }
            }
            else
            {
                if (equality)
                {
                    expression = argument1.EqualTo(argument2);
                }
                else
                {
                    expression = argument1.NotEqualTo(argument2);
                }
            }

            expression.Arguments = new[] { argument1, argument2 };

            return(expression);
        }