https://cr.openjdk.java.net/~briangoetz/valhalla/sov/02-object-model.html calls for an inline class to be an island in the type
system.
So an inline class V at the type system level should answer false to
the question:
V <: jlO ? (V.ref <: jlO)
Likewise if an inline class declaration V spells out that it implements an interface IFoo, it is really V.ref that implements IFoo.
Here is the relevant text from the design document:
// ---
Interfaces
Historically, for a class to implement an interface meant several things:
Conformance. The class has, as members, all the members of the interface.
Transitivity. Any subclasses of this class also implement the interface.
Subtyping. The class type is a subtype of the interface type.
We need to refine this last bullet, subtyping, in a small way to support inline classes; we say that the reference projection of the inline class is a subtype of the interface type. (Identity class types are their own reference projection, so this statement holds for all classes.) Similarly, if an inline class extends an abstract class, this means that the reference projection is a subtype of the abstract class.
// ----