On Mon, 12 Jul 2021 16:43:33 GMT, Hannes Wallnöfer <hann...@openjdk.org> wrote:

>> This change adds support for generating HTML links to the type arguments of 
>> enclosing classes when creating a link to an inner class. Previously, only a 
>> link to the inner class was created and the type arguments were even omitted 
>> from the link label.
>> 
>> The new feature to create separate links to the enclosing class and its type 
>> arguments is only activated if the enclosing class has type arguments. If 
>> the enclosing class is non-generic, the old behavior is preserved to create 
>> a single link to the inner class. The reason for this is that a dedicated 
>> link to the enclosing class itself provides little benefit, since it can be 
>> easily reached via the "Enclosing class" link of the inner class. Also, 
>> linking the enclosing type in absence of type arguments makes it hard to see 
>> that there are two links and easy to click on the wrong link by mistake.
>> 
>> On the other hand, for type arguments a separate link should be useful since 
>> it is often not a "nearby" type. It is also easier to detect the different 
>> links than for non-generic nested classes. I came to like this "mixed" 
>> solution best after trying several other approaches.
>
> Hannes Wallnöfer has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains four additional 
> commits since the last revision:
> 
>  - JDK-8259499: Add newline at end of new test
>  - JDK-8259499: Refactor code to use new Utils.isGenericType method, add 
> workaround and test for JDK-8269706
>  - Merge branch 'master' into JDK-8259499
>  - JDK-8259499: Handling type arguments from outer classes for inner class in 
> javadoc

I have added a commit to this PR to add a Utils#isGenericType(TypeMirror) 
method that is used from `LinkInfo`, `LinkFactory` and `HtmlDocletWriter`. I 
think the code is actually a bit nicer now.

Interestingly, I stumbled over a NPE caused by JDK-8269706 when a generic 
reference is inherited from an overridden method. This bug existed before the 
last commit (and I think before this PR, although I didn't test this). Since we 
do not have the time to fix the root problem for 17, I added a workaround 
(triple null check in `CommentHelper`) as well as a test for the condition in 
`TestGenericTypeLink.java`.

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

PR: https://git.openjdk.java.net/jdk17/pull/195

Reply via email to