src/share/classes/com/sun/tools/javac/comp/Check.java

changeset 1344
73312ec2cf7c
parent 1337
2eca84194807
child 1347
1408af4cd8b0
     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())

mercurial