public void GetArgumentSyntax_WhenUsingMethodAndCasting_ShouldGetCode() { var argument = new InvocationArgument(Statement.Expression.Invoke(new MethodReference("Do")).AsExpression(), typeof(int)); var syntax = argument.GetArgumentSyntax(); Assert.IsInstanceOf <ArgumentSyntax>(syntax); Assert.AreEqual("(int)Do()", syntax.ToString()); }
public void GetArgumentSyntax_WhenUsingReference_ShouldGetCode() { var argument = new InvocationArgument(new MethodReference("Do")); var syntax = argument.GetArgumentSyntax(); Assert.IsInstanceOf <ArgumentSyntax>(syntax); Assert.AreEqual("Do()", syntax.ToString()); }
public Expression Compile(AssignCompiler component) { var instance = component.Getter; var methodName = component.Operator; var argument = new InvocationArgument(ArgumentKind.Simple, component.Right); var call = CompilerUtils.Call(instance, methodName, component.Visibility, argument); return(component.Setter(call)); }
public override Expression Compile() { var left = LeftNode.Accept(Compiler); var right = RightNode.Accept(Compiler); var visibility = LeftNode.GetVisibility(); var argument = new InvocationArgument(ArgumentKind.Simple, right); return(CompilerUtils.Call(left, Operator, visibility, argument)); }
public override Expression Setter(Expression rightHandSide) { var rightVar = Variable(typeof(iObject), "right"); var rightArgument = new InvocationArgument(ArgumentKind.Simple, rightVar); return(Block( typeof(iObject), new[] { rightVar }, Assign(rightVar, rightHandSide), CompilerUtils.Call(instance, SetterMethodName, Visibility, rightArgument), rightVar )); }