> 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 with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains four additional 
commits since the last revision:

 - fixing build error
 - Merge branch 'master' into JDK-8343286
 - fixing build error
 - 8343286: Redundant cast in polymorphic method call

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/21914/files
  - new: https://git.openjdk.org/jdk/pull/21914/files/3ead0d87..34b5b020

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

  Stats: 6969 lines in 231 files changed: 5321 ins; 959 del; 689 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

Reply via email to