Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support comments in method bodies #268

Open
gastaldi opened this issue Nov 7, 2022 Discussed in #267 · 9 comments · May be fixed by #269
Open

Support comments in method bodies #268

gastaldi opened this issue Nov 7, 2022 Discussed in #267 · 9 comments · May be fixed by #269

Comments

@gastaldi
Copy link
Member

gastaldi commented Nov 7, 2022

Discussed in #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.

@lincolnthree
Copy link
Member

lincolnthree commented Nov 7, 2022

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

@gastaldi gastaldi linked a pull request Nov 7, 2022 that will close this issue
@gastaldi
Copy link
Member Author

gastaldi commented Nov 7, 2022

@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 #269

@lincolnthree
Copy link
Member

lincolnthree commented Nov 8, 2022

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

@gastaldi
Copy link
Member Author

gastaldi commented Nov 8, 2022

It's still not working. Unfortunately the solution with Document doesn't work when the class is created on-the-fly

@oc007us
Copy link

oc007us commented Aug 28, 2024

Greetings! Wondering about the status of this issue.

@gastaldi
Copy link
Member Author

@oc007us no evolution so far, unfortunately. Open for suggestions 😉

@oc007us
Copy link

oc007us commented Aug 28, 2024

@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.

@gastaldi
Copy link
Member Author

@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

@oc007us
Copy link

oc007us commented Aug 28, 2024

@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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants