RFR: 8263358: Update java.lang to use instanceof pattern variable [v5]
Rémi Forax
github.com+828220+forax at openjdk.java.net
Mon Mar 15 10:50:09 UTC 2021
On Mon, 15 Mar 2021 10:18:26 GMT, Pavel Rappo <prappo at openjdk.org> wrote:
>> src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java line 360:
>>
>>> 358: public final boolean equals(Object o) {
>>> 359: if (this == o) return true;
>>> 360: return (o instanceof DynamicConstantDesc desc)
>>
>> should be
>> `(o instanceof DynamicConstantDesc<?> desc)`
>
> I noticed that too initially. However, `javac` does not seem to produce a "rawtypes" warning. Which makes sense, if you think about it.
The problem is that `desc` is a raw type and raw types doesn't play well with the rest of the language (in particular with inference).
I think it's a bug in javac, it should not even raise a warning but an error.
But the spec is not fully clear.
The spec says that the narrow conversion should not be unchecked
https://docs.oracle.com/javase/specs/jls/se15/preview/specs/patterns-instanceof-jls.html#jls-14.30.2
it depends if you consider the raw conversion as unchecked or not.
-------------
PR: https://git.openjdk.java.net/jdk/pull/2913
More information about the core-libs-dev
mailing list