On Tue, 26 Sep 2023 10:21:06 GMT, Maurizio Cimadamore <[email protected]>
wrote:
>> test/langtools/tools/javac/lambda/IdentifierTest9.out line 33:
>>
>>> 31: IdentifierTest.java:152:17: compiler.err.use.of.underscore.not.allowed
>>> 32: IdentifierTest.java:158:16:
>>> compiler.err.use.of.underscore.not.allowed.with.brackets
>>> 33: IdentifierTest.java:160:25: compiler.err.use.of.underscore.not.allowed
>>
>> Note the errors are like:
>>
>> /home/jlahoda/src/jdk/jdk2/test/langtools/tools/javac/lambda/IdentifierTest.java:160:
>> error: as of release 21, the underscore keyword '_' is only allowed to
>> declare
>> for(String _s : _ ) {
>> ^
>> unnamed patterns, local variables, exception parameters or lambda
>> parameters
>>
>>
>> At least the release version should be updated, but to not let the message
>> to be broken into two lines like this. Maybe produce a top-level diagnostic
>> along the line of "underscore not allowed here" with sub-diagnostic with the
>> details (which then can (maybe?) span multiple lines).
>>
>> Also, the wording sounds to me like if there was a restriction in JDK 22,
>> while underscore is actually permitted on more places than before.
>>
>> So, maybe something like:
>>
>>
>> underscore not allowed here
>> as of release 9, ''_'' is a keyword, and may not be used as an identifier
>> as of release 21, ''_'' can be used as a name in the declaration of unnamed
>> patterns, local variables, exception parameters or lambda parameters
>>
>> ?
>> Just an idea.
>
> I agree. Also, this is not helped by the fact that in this particular
> message, the `_` does not appear in a variable declaration. Maybe we should
> use two distinct messages for when `_` is found as an "expression" (e.g. an
> identifier) and when it is used as a declaration _name_.
@mcimadamore @lahodaj I attempted to do this split for non variables that do
not allow underscore. I print the simple version of the error message. Is that
what you meant Maurizio?
I also fixed the `UnderscoreAsIdent` adding the missing `--release 9`. It was
the same omission as with other tests that @lahodaj pointed.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/15649#discussion_r1339746518