public void Can_pass_ANY_class_closure_with_constant_to_TryCompile() { var x = new X(); var xConstExpr = Constant(x); var expr = Lambda <Func <X> >(xConstExpr); var cx = new ClosureX(x); var f = expr.TryCompileWithPreCreatedClosure <Func <X> >(cx, xConstExpr); Assert.IsInstanceOf <X>(f()); }
public void Can_pass_closure_with_block_to_TryCompile() { var x = new X(); var xConstExpr = Constant(x); var expr = Lambda <Func <X> >(Block(xConstExpr)); var cx = new ClosureX(x); var f = expr.TryCompileWithPreCreatedClosure <Func <X> >(cx, xConstExpr); Assert.IsNotNull(f); var result = f(); Assert.AreSame(x, result); }
public void Can_pass_closure_with_try_catch_to_TryCompile() { var x = new X(); var xConstExpr = Constant(x); var expr = Lambda <Func <X> >(TryCatch( xConstExpr, Catch(typeof(Exception), Default(xConstExpr.Type)))); var cx = new ClosureX(x); var f = expr.TryCompileWithPreCreatedClosure <Func <X> >(cx, xConstExpr); Assert.IsNotNull(f); var result = f(); Assert.AreSame(x, result); }