コード例 #1
0
        public void SubstitutionInArguments()
        {
            string               program    = TestUtil.StatementParse("substring(start, end);");
            CompilationUnit      cv         = TestUtil.ParseProgram(program);
            InvocationExpression ivc        = (InvocationExpression)TestUtil.GetStatementNodeOf(cv, 0);
            string               mapProgram = TestUtil.StatementParse("Substring(a, b - a);");
            CompilationUnit      cu         = TestUtil.ParseProgram(mapProgram);

            marker.MarkIdentifiers(cu);

            substitution.TrackedVisitCompilationUnit(cu, ivc.Arguments);
            string expected = TestUtil.CSharpStatementParse("Substring(start, end - start);");

            TestUtil.CodeEqual(expected, TestUtil.GenerateCode(cu));
        }
コード例 #2
0
ファイル: MemberMapper.cs プロジェクト: wangchengqun/janett
        private Expression GetMapExpression(string mapKey)
        {
            string  program = "namespace Test { public class A { public void Method() { result = " + mapKey + "; } }}";
            IParser parser  = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));

            parser.ParseMethodBodies = true;
            parser.Parse();

            CompilationUnit cu = parser.CompilationUnit;

            ParentVisitor parentVisitor = new ParentVisitor();

            parentVisitor.VisitCompilationUnit(cu, null);

            TypeReferenceCorrector typeReferenceCorrector = new TypeReferenceCorrector();

            typeReferenceCorrector.VisitCompilationUnit(cu, null);

            MappingIdentifierMarker mappingIdentifierMarker = new MappingIdentifierMarker();

            mappingIdentifierMarker.MarkIdentifiers(cu);

            NamespaceDeclaration ns  = (NamespaceDeclaration)cu.Children[0];
            TypeDeclaration      ty  = (TypeDeclaration)ns.Children[0];
            MethodDeclaration    md  = (MethodDeclaration)ty.Children[0];
            ExpressionStatement  st  = (ExpressionStatement)md.Body.Children[0];
            AssignmentExpression ase = (AssignmentExpression)st.Expression;

            return(ase);
        }
コード例 #3
0
        private Expression GetMapExpression(string mapKey)
        {
            string program = "namespace Test { public class A { public void Method() { result = " + mapKey + "; } }}";
            IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));
            parser.ParseMethodBodies = true;
            parser.Parse();

            CompilationUnit cu = parser.CompilationUnit;

            ParentVisitor parentVisitor = new ParentVisitor();
            parentVisitor.VisitCompilationUnit(cu, null);

            TypeReferenceCorrector typeReferenceCorrector = new TypeReferenceCorrector();
            typeReferenceCorrector.VisitCompilationUnit(cu, null);

            MappingIdentifierMarker mappingIdentifierMarker = new MappingIdentifierMarker();
            mappingIdentifierMarker.MarkIdentifiers(cu);

            NamespaceDeclaration ns = (NamespaceDeclaration) cu.Children[0];
            TypeDeclaration ty = (TypeDeclaration) ns.Children[0];
            MethodDeclaration md = (MethodDeclaration) ty.Children[0];
            ExpressionStatement st = (ExpressionStatement) md.Body.Children[0];
            AssignmentExpression ase = (AssignmentExpression) st.Expression;
            return ase;
        }