On Mon, 29 Jul 2024 19:14:40 GMT, Archie Cobbs <aco...@openjdk.org> wrote:

>> The standard Javadoc doclet has a long-standing bug (since 2006, old enough 
>> to vote :) whereby constructor type parameters are simply omitted from the 
>> output. This results in confusing documentation that look like this:
>> 
>> public MyClass(T obj) - Description of this constructor...
>> 
>> with no explanation of what type `T` is.
>> 
>> The fix itself is straightforward (a one liner), but it requires a bit of 
>> prerequisite refactoring:
>> 
>> 1. The method `Signatures.appendTypeParameters()` would throw an NPE if 
>> given a constructor, because the `returnType` is null. This is easy to work 
>> around with a simple null check.
>> 
>> 2. The code for generating the HTML for the type parameters was embedded in 
>> a method `AbstractMemberWriter.addModifiersAndType()` which assumed a normal 
>> method with a return type. In order to make this bit resuable for 
>> constructors too, it has been extracted out into a new method 
>> `AbstractExecutableMemberWriter.addTypeParameters()`.
>> 
>> 3. `ConstructorWriter` has an optimization in which constructor modifiers 
>> are omitted if all constructors are `public`, a common case. This 
>> optimization is disabled using a field named `foundNonPubConstructor`. A 
>> side effect of this optimization is that the constructor summary table has 
>> only two columns instead of three (the first being unnecessary). However, 
>> type parameters should appear in the same column as modifiers, so this logic 
>> was generalized to check for both (a) all constructors `public`, and (b) no 
>> constructors with type parameters. The field `foundNonPubConstructor` has 
>> been renamed to `showConstructorModifiers`; this clarifies `ClassUseWriter` 
>> using it for that purpose when generating the use index.
>> 
>> The above steps have been broken out into separate commits.
>
> Thanks very much for the reviews.

On a side note, @archiecobbs you can add your openjdk email acobbs at openjdk 
to your github account for github to correctly attribute your commits. (this 
address delegates your jbs email)

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

PR Comment: https://git.openjdk.org/jdk/pull/20044#issuecomment-2256724979

Reply via email to