internal Evaluation Evaluate(Expression/*!*/ parent, out Expression/*!*/ expr) { if (HasValue) { expr = Expression; return new Evaluation(parent, parent.Evaluate(Value)); } expr = Literalize(); return new Evaluation(parent); }
internal static Evaluation ReadOnlyEvaluate(Expression/*!*/ parent, Evaluation eval1, Evaluation eval2) { if (eval1.HasValue && eval2.HasValue) return new Evaluation(parent, parent.Evaluate(eval1.Value, eval2.Value)); return new Evaluation(parent); }
internal Evaluation ReadOnlyEvaluate(Expression/*!*/ parent) { if (HasValue) return new Evaluation(parent, parent.Evaluate(Value)); return new Evaluation(parent); }
internal static Evaluation Evaluate(Expression/*!*/ parent, Evaluation eval1, out Expression/*!*/ expr1, Evaluation eval2, out Expression/*!*/ expr2) { if (eval1.HasValue && eval2.HasValue) { expr1 = eval1.Expression; expr2 = eval2.Expression; return new Evaluation(parent, parent.Evaluate(eval1.Value, eval2.Value)); } expr1 = eval1.Literalize(); expr2 = eval2.Literalize(); return new Evaluation(parent); }