internal override bool OptimizeAst(ref Expression ex, ref string error) { if (!InnerExpression.OptimizeAst(ref ex, ref error)) { return(false); } ex = InnerExpression; return(true); }
internal override bool OptimizeAst(ref Expression ex, ref string error) { // Optimize our children first if (!InnerExpression.OptimizeAst(ref InnerExpression, ref error)) { return(false); } // optimize the case that we are a negative literal if (ex is Literal l) { ex = new Literal(Start, -l.Value); } return(true); }