src/share/classes/com/sun/tools/javac/jvm/ClassReader.java

changeset 2099
1b469fd31e35
parent 2047
5f915a0c9615
child 2133
19e8eebfbe52
     1.1 --- a/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Wed Oct 09 13:06:49 2013 +0200
     1.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Wed Oct 09 13:09:31 2013 +0200
     1.3 @@ -1993,11 +1993,15 @@
     1.4                  (flags & ABSTRACT) == 0 && !name.equals(names.clinit)) {
     1.5              if (majorVersion > Target.JDK1_8.majorVersion ||
     1.6                      (majorVersion == Target.JDK1_8.majorVersion && minorVersion >= Target.JDK1_8.minorVersion)) {
     1.7 -                currentOwner.flags_field |= DEFAULT;
     1.8 -                flags |= DEFAULT | ABSTRACT;
     1.9 +                if ((flags & STATIC) == 0) {
    1.10 +                    currentOwner.flags_field |= DEFAULT;
    1.11 +                    flags |= DEFAULT | ABSTRACT;
    1.12 +                }
    1.13              } else {
    1.14                  //protect against ill-formed classfiles
    1.15 -                throw new CompletionFailure(currentOwner, "default method found in pre JDK 8 classfile");
    1.16 +                throw badClassFile((flags & STATIC) == 0 ? "invalid.default.interface" : "invalid.static.interface",
    1.17 +                                   Integer.toString(majorVersion),
    1.18 +                                   Integer.toString(minorVersion));
    1.19              }
    1.20          }
    1.21          if (name == names.init && currentOwner.hasOuterInstance()) {

mercurial