Javac is not issuing a mandated unchecked cast warning for code like:
import java.lang.invoke.VarHandle;
class VarHandleCast<V> {
VarHandle vh;
V method(Object obj) {
return (V)vh.getAndSet(this, obj);
}
}
according to the spec the return type inferred for this method polymorphic
method should be Object see:
- If the compile-time declaration for the method invocation is a signature
polymorphic method, then:
...
– The compile-time result is determined as follows:
Otherwise, if the method invocation expression is the operand of a cast
expression (§15.16), the compile-time result is the erasure of the type of
the
cast expression (§4.6).
javac is not doing the type erasure mandated by the spec which is what this PR
is fixing
TIA
-------------
Commit messages:
- 8343286: Redundant cast in polymorphic method call
Changes: https://git.openjdk.org/jdk/pull/21914/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21914&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8343286
Stats: 29 lines in 7 files changed: 28 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/21914.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/21914/head:pull/21914
PR: https://git.openjdk.org/jdk/pull/21914