diff --git a/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java b/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java index 7f466ab1129..bebf917c570 100644 --- a/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java +++ b/src/main/java/spoon/reflect/visitor/DefaultJavaPrettyPrinter.java @@ -1680,7 +1680,9 @@ public String getPackageDeclaration() { @Override public String printPackageInfo(CtPackage pack) { PrinterHelper bck = printer; + ElementPrinterHelper bck2 = elementPrinterHelper; printer = new PrinterHelper(env); + elementPrinterHelper = new ElementPrinterHelper(printer, this, env); elementPrinterHelper.writeComment(pack); @@ -1692,6 +1694,7 @@ public String printPackageInfo(CtPackage pack) { printer.write("package " + pack.getQualifiedName() + ";"); } String ret = printer.toString(); + elementPrinterHelper = bck2; printer = bck; return ret; diff --git a/src/test/java/spoon/test/comment/CommentTest.java b/src/test/java/spoon/test/comment/CommentTest.java index 94b6348a497..14da94bb12d 100644 --- a/src/test/java/spoon/test/comment/CommentTest.java +++ b/src/test/java/spoon/test/comment/CommentTest.java @@ -26,6 +26,7 @@ import spoon.reflect.declaration.CtInterface; import spoon.reflect.declaration.CtMethod; import spoon.reflect.declaration.CtNamedElement; +import spoon.reflect.declaration.CtPackage; import spoon.reflect.declaration.CtParameter; import spoon.reflect.declaration.ModifierKind; import spoon.reflect.factory.Factory; @@ -33,6 +34,7 @@ import spoon.reflect.visitor.filter.AbstractFilter; import spoon.reflect.visitor.filter.TypeFilter; import spoon.support.DefaultCoreFactory; +import spoon.support.JavaOutputProcessor; import spoon.support.StandardEnvironment; import spoon.support.compiler.jdt.JDTSnippetCompiler; import spoon.test.comment.testclasses.BlockComment; @@ -52,7 +54,7 @@ public class CommentTest { private String newLine = System.getProperty("line.separator"); - + private Factory getSpoonFactory() { final Launcher launcher = new Launcher(); launcher.run(new String[]{ @@ -70,6 +72,22 @@ private CtComment createFakeComment(Factory factory, String content) { private CtComment createFakeBlockComment(Factory factory, String content) { return factory.Code().createComment(content, CtComment.CommentType.BLOCK); } + + @Test + public void testCombinedPackageInfoComment() { + Factory f = getSpoonFactory(); + CtPackage p = f.Package().get("spoon.test.comment.testclasses"); + String l_content = ((JavaOutputProcessor)f.getEnvironment().getDefaultFileGenerator()).getPrinter().printPackageInfo(p); + String EOL = System.getProperty("line.separator"); + assertEquals("/* comment1 */"+EOL+ + "// comment2"+EOL+ + "/**"+EOL+ + " * Comment3"+EOL+ + " */"+EOL+ + "@java.lang.Deprecated"+EOL+ + "package spoon.test.comment.testclasses;",l_content); + } + @Test public void testRemoveComment() { diff --git a/src/test/java/spoon/test/comment/testclasses/package-info.java b/src/test/java/spoon/test/comment/testclasses/package-info.java new file mode 100644 index 00000000000..e25b8bc5da3 --- /dev/null +++ b/src/test/java/spoon/test/comment/testclasses/package-info.java @@ -0,0 +1,10 @@ +/* + * comment1 + */ + +// comment2 +/** + * Comment3 + */ +@java.lang.Deprecated +package spoon.test.comment.testclasses; \ No newline at end of file