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)); }
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); }
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; }