V? and generics

Remi Forax forax at univ-mlv.fr
Fri May 10 20:50:33 UTC 2019

Let's say i have this interface:
  interface Orderable<T extends Orderable<T>> {
   boolean lessThan(T t);

and i want my inline class to implement it:
  @__inline__ class FooOrderable implements Orderable<FooOrderable?> {
    public boolean lessThan(FooOrderable? foo) {
      return false;

how i'm suppose to write it given that the bound of FooOrderable as to be Orderable<FooOrderable> but Orderable<FooOrderable> is not a valid type ?

I think that we have moved from a generic of an inline class is unsafe (because of the NPEs) to it's an illegal type a little to fast.

I believe we should emit an unchecked warning instead with the definition of unchecked to be widened to include not only the CCEs but also the NPEs.


More information about the valhalla-spec-experts mailing list