diff -r b12ffdfa1341 -r cf84b07a82db src/share/classes/com/sun/tools/javac/comp/Check.java --- a/src/share/classes/com/sun/tools/javac/comp/Check.java Mon Jan 21 20:15:16 2013 +0000 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Mon Jan 21 20:19:53 2013 +0000 @@ -1058,9 +1058,12 @@ } else mask = ConstructorFlags; } else if ((sym.owner.flags_field & INTERFACE) != 0) { - if ((flags & DEFAULT) != 0) { - mask = InterfaceDefaultMethodMask; - implicit = PUBLIC | ABSTRACT; + if ((flags & (DEFAULT | STATIC)) != 0) { + mask = InterfaceMethodMask; + implicit = PUBLIC; + if ((flags & DEFAULT) != 0) { + implicit |= ABSTRACT; + } } else { mask = implicit = InterfaceMethodFlags; } @@ -1130,6 +1133,10 @@ PRIVATE | STATIC | DEFAULT)) && checkDisjoint(pos, flags, + STATIC, + DEFAULT) + && + checkDisjoint(pos, flags, ABSTRACT | INTERFACE, FINAL | NATIVE | SYNCHRONIZED) &&