Currently, when javac encounters a javadoc reference, like `@see 
PrintStream#println(int)`, will first try to find a method `println` in 
`PrintStream` using subtyping on the argument types, which may find another 
overload of the method with an argument that is a subtype of `int` - like 
`println(double)`. Consequently, the link in the javadoc may be to a wrong 
method.

In this patch, the proposal is to use the subtype search only as a backup 
option, using the existing check based on `isSameType` first, and only doing an 
inexact match using subtyping if the more exact match fails to find a method. 
This fallback should help possible existing broken references to still work as 
before, while the preferred use of the more exact match should select the 
correct method in usual correct cases.

This patch fixes some instances of incorrect references in the JDK's javadoc, a 
diff of the generated javadocs for the JDK mainline is here:
http://cr.openjdk.java.net/~jlahoda/8278373/JDK-8278373.diff

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

Commit messages:
 - 8278373: JavacTypes.searchMethod finds incorrect match

Changes: https://git.openjdk.java.net/jdk18/pull/79/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk18&pr=79&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8278373
  Stats: 70 lines in 2 files changed: 52 ins; 2 del; 16 mod
  Patch: https://git.openjdk.java.net/jdk18/pull/79.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk18 pull/79/head:pull/79

PR: https://git.openjdk.java.net/jdk18/pull/79

Reply via email to