RFR: 8343286: Missing unchecked cast warning in polymorphic method call [v5]

Vicente Romero vromero at openjdk.org
Tue Nov 12 16:05:15 UTC 2024


> 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
> 
> Note: I had to add some annotations to suppress warnings in java.base that were not being issued before due to the javac bug

Vicente Romero has updated the pull request incrementally with one additional commit since the last revision:

  addressing CSR comments

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/21914/files
  - new: https://git.openjdk.org/jdk/pull/21914/files/f66ee79d..7fd18f47

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=21914&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21914&range=03-04

  Stats: 7 lines in 2 files changed: 5 ins; 0 del; 2 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


More information about the compiler-dev mailing list