Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8244711

[lworld] Javac needs to tweak checks for interface implementation by an inline type.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • repo-valhalla
    • repo-valhalla
    • tools
    • generic
    • generic

      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.

      // ----

            sadayapalam Srikanth Adayapalam (Inactive)
            sadayapalam Srikanth Adayapalam (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: