RFR: JDK-8298405: Support Markdown in Documentation Comments [v7]
Jonathan Gibbons
jjg at openjdk.org
Wed Jan 31 21:18:09 UTC 2024
On Tue, 30 Jan 2024 22:55:27 GMT, Jonathan Gibbons <jjg at openjdk.org> wrote:
>> src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DocTreeMaker.java line 238:
>>
>>> 236: && postamble.isEmpty()
>>> 237: && fullBody.stream().anyMatch(t -> t.getKind() == Kind.MARKDOWN)
>>> 238: ? CommentStyle.JAVADOC_LINE : CommentStyle.JAVADOC_BLOCK;
>>
>> While clever, it seems to be prone to false positive `JAVADOC_LINE`. Also, it is inconsistent with `null` and `Position.NOPOS` returned from the `getText` and `getSourcePos(int)` methods respectively.
>
> I'm not worried about false positive `JAVADOC_LINE` than maybe false _negative_ `JAVADOC_LINE`. Generally, the underlying issue here is how to handle weird combinations of `DocTrees` constructed by a user of the public API. For example, should we check, and reject, a `fullBody` containing `MARKDOWN` nodes and non-empty `preamble` or `postamble`, since that combination will never come from `DocCommentParser`.
>
> I'm not worried about comparison with `getText` and `getSourcePos`, since there really is no other value for the source text or source position that we can return. But we can infer a best guess for the style.
>
> Arguably, we should check the `tags` as well.
>
> ------
>
> I dug deeper.
>
> We do create synthetic trees in the standard doclet, such as for the descriptions of mandated methods (like `values` and `valueOf` for any enum class. Those synthetic trees do utilize this code path, although the `getStyle` method is not currently invoked. (Verified by changing code to throw `UnsupportedOperationException` and run all the tests.) It's also true those synthetic trees do not leverage any Markdown support at this time.
>
> I prefer to leave the code as-is at this time.
I revisited this, and rewrote the code and added more comments for now and for later.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16388#discussion_r1473474540
More information about the build-dev
mailing list