RFR: 8342808: Javadoc should add whitespace between type parameters

Hannes Wallnöfer hannesw at openjdk.org
Thu Oct 31 18:01:29 UTC 2024


On Tue, 29 Oct 2024 11:14:54 GMT, Nizar Benalla <nbenalla at openjdk.org> wrote:

> Please review this patch to render javadocs as `<K, V, T>` rather than `<K,V,T>` to match naming conventions and make the rendered output slighly nicer to read.
> 
> Passes langtool tests.
> 
> The[ generated docs](https://cr.openjdk.org/~nbenalla/GeneratedDocs/TypeParams/docs/api/index.html) only includes `java.base/lang`, `java.base/util` and `java.compiler/javax`

> Not all reviewers might realise it, but javadoc currently outputs generics both ways, with whitespace and without. For example, have a look at [Map.of](https://docs.oracle.com/en/java/javase/23/docs/api/java.base/java/util/Map.html#of()). The first occurrence of generic parameters (i.e. declaration), immediately after the `static` keyword, has whitespace. The second occurrence (i.e. use) does not. I think we need to make up our mind on what we should do.

I just looked into this, and what actually happens is that we have a special `HtmlLinkInfo.addLineBreaksInTypeParameters` flag to insert a newline character after the comma just for this particular case, but the CSS for this particular span of the method signature uses `white-space: normal;`, so the newline character is displayed as space. 

The code to add the newline in this particular position is rather ancient (previously encoded as `HtmlLinkInfo.Kind.MEMBER_TYPE_PARAMS`), and it was certainly never meant to be displayed with preformatted whitespace, so IMO the most likely reason to do this was to add a line break opportunity before we used `<wbr>`. Therefore, regardless of whether we decide to add a space or not, that flag and special case can be safely removed.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/21759#issuecomment-2450498640


More information about the javadoc-dev mailing list