--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Wed Oct 09 13:06:49 2013 +0200
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Wed Oct 09 13:09:31 2013 +0200
@@ -1993,11 +1993,15 @@
(flags & ABSTRACT) == 0 && !name.equals(names.clinit)) {
if (majorVersion > Target.JDK1_8.majorVersion ||
(majorVersion == Target.JDK1_8.majorVersion && minorVersion >= Target.JDK1_8.minorVersion)) {
- currentOwner.flags_field |= DEFAULT;
- flags |= DEFAULT | ABSTRACT;
+ if ((flags & STATIC) == 0) {
+ currentOwner.flags_field |= DEFAULT;
+ flags |= DEFAULT | ABSTRACT;
+ }
} else {
//protect against ill-formed classfiles
- throw new CompletionFailure(currentOwner, "default method found in pre JDK 8 classfile");
+ throw badClassFile((flags & STATIC) == 0 ? "invalid.default.interface" : "invalid.static.interface",
+ Integer.toString(majorVersion),
+ Integer.toString(minorVersion));
}
}
if (name == names.init && currentOwner.hasOuterInstance()) {