The primary problem was that key `compiler.err.dc.ref.bad.parens` had the wrong
message "')' missing in reference". That error message is not used when the
right parenthesis is missing, but when it occurs before the end of the
signature. The missing parenthesis case is caught earlier by the parens
balancing code in `DocCommentParser#reference` and uses message
`compiler.err.dc.unterminated.signature` ("unterminated signature").
I changed the message for `compiler.err.dc.ref.bad.parens` to "unexpected
parenthesis".
A secondary problem was that `DocCommentParser#reference` also threw
"unterminated signature" when there were too many closing angle brackets or
parentheses. These cases are now passed through in`DocCommentParser#reference`
so that `ReferenceParser#parse` can throw a more appropriate error ("unexpected
parenthesis" or "unexpected input").
Here's a list of what references now cause what error messages:
- `#foo(int` `unterminated signature`
- `#foo((int))` `unexpected parenthesis`
- `#foo(int))` `unexpected parenthesis`
- `#foo(int)x` `unexpected parenthesis`
- `F<T` `unterminated signature`
- `F<T>>` `unexpected input`
I added two new tests for the cases with too many closing brackets/parens that
used to fail with "unterminated signature".
-------------
Commit messages:
- JDK-8264181: javadoc tool Incorrect error message about malformed link
Changes: https://git.openjdk.java.net/jdk/pull/4068/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4068&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8264181
Stats: 38 lines in 4 files changed: 33 ins; 0 del; 5 mod
Patch: https://git.openjdk.java.net/jdk/pull/4068.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4068/head:pull/4068
PR: https://git.openjdk.java.net/jdk/pull/4068