diff --git a/src/test/java/spoon/test/template/TemplateReplaceReturnTest.java b/src/test/java/spoon/test/template/TemplateReplaceReturnTest.java index 40936e4eae0..150a1fe6510 100644 --- a/src/test/java/spoon/test/template/TemplateReplaceReturnTest.java +++ b/src/test/java/spoon/test/template/TemplateReplaceReturnTest.java @@ -9,6 +9,7 @@ import spoon.Launcher; import spoon.OutputType; import spoon.reflect.code.CtBlock; +import spoon.reflect.code.CtExpression; import spoon.reflect.declaration.CtClass; import spoon.reflect.factory.Factory; import spoon.support.compiler.FileSystemFile; @@ -36,4 +37,23 @@ public void testReturnReplaceTemplate() throws Exception { ModelUtils.canBeBuilt(new File("./target/spooned/spoon/test/template/ReturnReplaceResult.java"), 8); } + @Test + public void testNoReturnReplaceTemplate() throws Exception { + //contract: the template engine supports replace of return expression by `` + Launcher launcher = new Launcher(); + launcher.addTemplateResource(new FileSystemFile("./src/test/java/spoon/test/template/testclasses/ReturnReplaceTemplate.java")); + + launcher.buildModel(); + Factory factory = launcher.getFactory(); + + CtExpression model = factory.createLiteral("AStringLiteral"); + + CtClass resultKlass = factory.Class().create(factory.Package().getOrCreate("spoon.test.template"), "ReturnReplaceResult"); + new ReturnReplaceTemplate(model).apply(resultKlass); + assertEquals("{ return \"AStringLiteral\";}", resultKlass.getMethod("method").getBody().toString().replaceAll("[\\r\\n\\t]+", "").replaceAll("\\s{2,}", " ")); + launcher.setSourceOutputDirectory(new File("./target/spooned/")); + launcher.getModelBuilder().generateProcessedSourceFiles(OutputType.CLASSES); + ModelUtils.canBeBuilt(new File("./target/spooned/spoon/test/template/ReturnReplaceResult.java"), 8); + } + } diff --git a/src/test/java/spoon/test/template/testclasses/ReturnReplaceTemplate.java b/src/test/java/spoon/test/template/testclasses/ReturnReplaceTemplate.java index 3a1e1664ed6..54dc075dbf7 100644 --- a/src/test/java/spoon/test/template/testclasses/ReturnReplaceTemplate.java +++ b/src/test/java/spoon/test/template/testclasses/ReturnReplaceTemplate.java @@ -1,6 +1,5 @@ package spoon.test.template.testclasses; -import spoon.reflect.code.CtBlock; import spoon.template.ExtensionTemplate; import spoon.template.Local; import spoon.template.TemplateParameter; @@ -14,7 +13,7 @@ public String method() throws Throwable { TemplateParameter _statement_; @Local - public ReturnReplaceTemplate(CtBlock statement) { + public ReturnReplaceTemplate(TemplateParameter statement) { this._statement_ = statement; }