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

missing error in qualified default super call

    Details

    • Subcomponent:
    • Resolved In Build:
      b124
    • Verification:
      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

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

                Dates

                • Created:
                  Updated:
                  Resolved: