1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java Fri Sep 28 18:50:40 2012 +0100 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Fri Sep 28 11:39:29 2012 -0700 1.3 @@ -2491,6 +2491,7 @@ 1.4 validateDocumented(t.tsym, s, pos); 1.5 validateInherited(t.tsym, s, pos); 1.6 validateTarget(t.tsym, s, pos); 1.7 + validateDefault(t.tsym, s, pos); 1.8 } 1.9 1.10 /** 1.11 @@ -2671,6 +2672,21 @@ 1.12 return true; 1.13 } 1.14 1.15 + private void validateDefault(Symbol container, Symbol contained, DiagnosticPosition pos) { 1.16 + // validate that all other elements of containing type has defaults 1.17 + Scope scope = container.members(); 1.18 + for(Symbol elm : scope.getElements()) { 1.19 + if (elm.name != names.value && 1.20 + elm.kind == Kinds.MTH && 1.21 + ((MethodSymbol)elm).defaultValue == null) { 1.22 + log.error(pos, 1.23 + "invalid.containedby.annotation.elem.nondefault", 1.24 + container, 1.25 + elm); 1.26 + } 1.27 + } 1.28 + } 1.29 + 1.30 /** Is s a method symbol that overrides a method in a superclass? */ 1.31 boolean isOverrider(Symbol s) { 1.32 if (s.kind != MTH || s.isStatic())