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

missing error in qualified default super call

    XMLWordPrintable

Details

    • b124
    • Verified

    Description

      Java 8 supports a new use of super:

      interface I {
      default int f(){return 0;}
      }

      class X implements I {
      public int f() {
      return I.super.f();
      }
      }

      This is described in 15.12.1.

      However, there is wording in 15.12.1 that says: Let T be the type declaration immediately enclosing the method invocation. It is a compile-time error if I is not a direct superinterface of T, or if there exists some other direct superclass or direct superinterface of T, J, such that J is a subtype of I.

      That would seem to require an error on this case, because T has a superclass of J, which is a subtype of I.

      interface I {
              default int f(){return 0;}
      }
      class J implements I { }
      class T extends J implements I {
              public int f() {
                      return I.super.f();
              }
      }

      Attachments

        Issue Links

          Activity

            People

              vromero Vicente Arturo Romero Zaldivar
              mcimadamore Maurizio Cimadamore
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: