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());
        }
Пример #3
0
        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));
        }
Пример #5
0
        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
                       ));
        }