public void IdentifierOnlyInvocation()
        {
            // InitializeComponents();
            IdentifierExpression identifier = new IdentifierExpression("InitializeComponents");
            InvocationExpression invocation = new InvocationExpression(identifier, new List <Expression>());
            object output = invocation.AcceptVisitor(new CodeDomVisitor(), null);

            Assert.IsTrue(output is CodeMethodInvokeExpression);
            CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;

            Assert.AreEqual("InitializeComponents", mie.Method.MethodName);
            Assert.IsTrue(mie.Method.TargetObject is CodeThisReferenceExpression);
        }
        public void MethodOnThisReferenceInvocation()
        {
            // InitializeComponents();
            MemberReferenceExpression field      = new MemberReferenceExpression(new ThisReferenceExpression(), "InitializeComponents");
            InvocationExpression      invocation = new InvocationExpression(field, new List <Expression>());
            object output = invocation.AcceptVisitor(new CodeDomVisitor(), null);

            Assert.IsTrue(output is CodeMethodInvokeExpression);
            CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;

            Assert.AreEqual("InitializeComponents", mie.Method.MethodName);
            Assert.IsTrue(mie.Method.TargetObject is CodeThisReferenceExpression);
        }
        public void InvocationOfStaticMethod()
        {
            // System.Drawing.Color.FromArgb();
            MemberReferenceExpression field = new MemberReferenceExpression(new IdentifierExpression("System"), "Drawing");

            field = new MemberReferenceExpression(field, "Color");
            field = new MemberReferenceExpression(field, "FromArgb");
            InvocationExpression invocation = new InvocationExpression(field, new List <Expression>());
            object output = invocation.AcceptVisitor(new CodeDomVisitor(), null);

            Assert.IsTrue(output is CodeMethodInvokeExpression);
            CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;

            Assert.AreEqual("FromArgb", mie.Method.MethodName);
            Assert.IsTrue(mie.Method.TargetObject is CodeTypeReferenceExpression);
            Assert.AreEqual("System.Drawing.Color", (mie.Method.TargetObject as CodeTypeReferenceExpression).Type.BaseType);
        }
예제 #4
0
        public override void VisitInvocationExpression(InvocationExpression invocationExpression)
        {
            base.VisitInvocationExpression(invocationExpression);

            var visitor = new CaptureSelectNewFieldNamesVisitor();
            invocationExpression.AcceptVisitor(visitor, null);

            var memberReferenceExpression = invocationExpression.Target as MemberReferenceExpression;

            if (memberReferenceExpression == null)
            {

                base.VisitInvocationExpression(invocationExpression);
                return;
            }

            if (memberReferenceExpression.MemberName == "Where")
                indexData.HasWhere = true;

            indexData.SelectExpressions = visitor.SelectExpressions;
        }
예제 #5
0
        public override void VisitInvocationExpression(InvocationExpression invocationExpression)
        {
            base.VisitInvocationExpression(invocationExpression);

            var selectExpressions = new Dictionary<string, Expression>();
            var visitor = new CaptureSelectNewFieldNamesVisitor(false, new HashSet<string>(), selectExpressions);
            invocationExpression.AcceptVisitor(visitor, null);

            var memberReferenceExpression = invocationExpression.Target as MemberReferenceExpression;

            if (memberReferenceExpression == null)
            {

                base.VisitInvocationExpression(invocationExpression);
                return;
            }

            if (memberReferenceExpression.MemberName == "Where")
                indexData.HasWhere = true;

            indexData.SelectExpressions = selectExpressions;
        }
예제 #6
0
        public override void VisitInvocationExpression(InvocationExpression invocationExpression)
        {
            base.VisitInvocationExpression(invocationExpression);

            var visitor = new CaptureSelectNewFieldNamesVisitor();

            invocationExpression.AcceptVisitor(visitor, null);

            var memberReferenceExpression = invocationExpression.Target as MemberReferenceExpression;

            if (memberReferenceExpression == null)
            {
                base.VisitInvocationExpression(invocationExpression);
                return;
            }

            if (memberReferenceExpression.MemberName == "Where")
            {
                indexData.HasWhere = true;
            }

            indexData.SelectExpressions = visitor.SelectExpressions;
        }
예제 #7
0
        public override void VisitInvocationExpression(InvocationExpression invocationExpression)
        {
            base.VisitInvocationExpression(invocationExpression);

            var selectExpressions = new Dictionary <string, Expression>();
            var visitor           = new CaptureSelectNewFieldNamesVisitor(false, new HashSet <string>(), selectExpressions);

            invocationExpression.AcceptVisitor(visitor, null);

            var memberReferenceExpression = invocationExpression.Target as MemberReferenceExpression;

            if (memberReferenceExpression == null)
            {
                base.VisitInvocationExpression(invocationExpression);
                return;
            }

            if (memberReferenceExpression.MemberName == "Where")
            {
                indexData.HasWhere = true;
            }

            indexData.SelectExpressions = selectExpressions;
        }
예제 #8
0
파일: CsToTs.cs 프로젝트: RReverser/Netjs
			Expression GetBaseInitCall (ConstructorDeclaration c, Substitute subs)
			{
				var thisInit = c.Initializer;
				var i = new InvocationExpression (
					new BaseReferenceExpression (), thisInit.Arguments.Select (x => x.Clone ()));
				i.AcceptVisitor (subs);
				return i;
			}