On Mon, 15 Mar 2021 10:18:26 GMT, Pavel Rappo <[email protected]> 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