1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java Tue Oct 16 21:03:36 2012 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Wed Oct 17 16:43:26 2012 +0100 1.3 @@ -1121,8 +1121,14 @@ 1.4 mask = PRIVATE; 1.5 } else 1.6 mask = ConstructorFlags; 1.7 - } else if ((sym.owner.flags_field & INTERFACE) != 0) 1.8 - mask = implicit = InterfaceMethodFlags; 1.9 + } else if ((sym.owner.flags_field & INTERFACE) != 0) { 1.10 + if ((flags & DEFAULT) != 0) { 1.11 + mask = InterfaceDefaultMethodMask; 1.12 + implicit = PUBLIC; 1.13 + } else { 1.14 + mask = implicit = InterfaceMethodFlags; 1.15 + } 1.16 + } 1.17 else { 1.18 mask = MethodFlags; 1.19 } 1.20 @@ -1169,7 +1175,7 @@ 1.21 default: 1.22 throw new AssertionError(); 1.23 } 1.24 - long illegal = flags & StandardFlags & ~mask; 1.25 + long illegal = flags & ExtendedStandardFlags & ~mask; 1.26 if (illegal != 0) { 1.27 if ((illegal & INTERFACE) != 0) { 1.28 log.error(pos, "intf.not.allowed.here"); 1.29 @@ -1185,7 +1191,7 @@ 1.30 // in the presence of inner classes. Should it be deleted here? 1.31 checkDisjoint(pos, flags, 1.32 ABSTRACT, 1.33 - PRIVATE | STATIC)) 1.34 + PRIVATE | STATIC | DEFAULT)) 1.35 && 1.36 checkDisjoint(pos, flags, 1.37 ABSTRACT | INTERFACE, 1.38 @@ -1209,7 +1215,7 @@ 1.39 STRICTFP))) { 1.40 // skip 1.41 } 1.42 - return flags & (mask | ~StandardFlags) | implicit; 1.43 + return flags & (mask | ~ExtendedStandardFlags) | implicit; 1.44 } 1.45 1.46