roaster
roaster copied to clipboard
Support comments in method bodies
Discussed in https://github.com/forge/roaster/discussions/267
Originally posted by panderior November 6, 2022 When I try to add a line comment to a Java class code I am trying to generate, the roaster library removes the comment and gives just the code.
My intention is to generate a code like this:
public class A {
public void helper () {
// this is a comment
System.out.println("Success");
}}
What have I tried:
- I have tried class and method level JavaDoc, which is a nice feature. But I also want to use line comment.
- I have tried getting the "toUnformattedString" on the JavaClassSource, but the line comments just won't appear.
Your help is very appreciated. Thank you.
I believe a custom visitor needs to be implemented to gain access to comments, otherwise the JDT ignores them. I seem to remember this from some issue a long time ago, but here's an example. Hopefully it still applies:
https://stackoverflow.com/questions/3019729/how-to-access-comments-from-the-java-compiler-tree-api-generated-ast/9884987#9884987
@lincolnthree yes, I discovered that through my investigation as well. The problem is that the comments are stored in the CompilationUnit
but you can not modify them (or I haven't found a way yet to do it).
In Eclipse JDT terms, it's impossible when Method.setBody
is called to create a Block
containing Statements
and store comments in the respective CompilationUnit
. See https://github.com/forge/roaster/pull/269
Ah yeah that makes sense. I see you found a solution using document. Just curious since I'm 'lurking' - did you mean for these tests to be @Disabled
? Or is it still not working?
https://github.com/forge/roaster/pull/269/files#diff-c2edb13e8db21b14ec895bcc177d91f546c2e60679aabe86c8d1cd8a43e6d72eR71
It's still not working. Unfortunately the solution with Document
doesn't work when the class is created on-the-fly
Greetings! Wondering about the status of this issue.
@oc007us no evolution so far, unfortunately. Open for suggestions 😉
@gastaldi, yes, it is a tricky one. I guess, there is a way to collect all comments and perhaps save them in the MethodImpl class. I am not sure if there is a way to insert them back when the entire CompilationUnit is written to a file.
@oc007us I guess it depends on if the MethodDeclaration
in JDT supports that, I am not a big fan of storing content that is not synchronized with the underlying JDT tree
@gastaldi, neither am I. The generated code in my case can be done away without comments. I will use the JavaDoc on the methods to add info. Thank you for looking into it!