src/share/classes/com/sun/tools/javac/code/Symbol.java

changeset 780
1d625fbe6c22
parent 697
28b021bb889f
child 815
d17f37522154
     1.1 --- a/src/share/classes/com/sun/tools/javac/code/Symbol.java	Thu Dec 09 15:50:10 2010 +0000
     1.2 +++ b/src/share/classes/com/sun/tools/javac/code/Symbol.java	Thu Dec 09 15:50:34 2010 +0000
     1.3 @@ -1103,18 +1103,24 @@
     1.4                   impl == null && is.nonEmpty();
     1.5                   is = is.tail) {
     1.6                  TypeSymbol i = is.head.tsym;
     1.7 -                for (Scope.Entry e = i.members().lookup(name);
     1.8 -                     impl == null && e.scope != null;
     1.9 -                     e = e.next()) {
    1.10 -                    if (this.overrides(e.sym, (TypeSymbol)owner, types, true) &&
    1.11 -                        // FIXME: I suspect the following requires a
    1.12 -                        // subst() for a parametric return type.
    1.13 -                        types.isSameType(type.getReturnType(),
    1.14 -                                         types.memberType(owner.type, e.sym).getReturnType())) {
    1.15 -                        impl = e.sym;
    1.16 -                    }
    1.17 -                    if (impl == null)
    1.18 -                        impl = implemented(i, types);
    1.19 +                impl = implementedIn(i, types);
    1.20 +                if (impl == null)
    1.21 +                    impl = implemented(i, types);
    1.22 +            }
    1.23 +            return impl;
    1.24 +        }
    1.25 +
    1.26 +        public Symbol implementedIn(TypeSymbol c, Types types) {
    1.27 +            Symbol impl = null;
    1.28 +            for (Scope.Entry e = c.members().lookup(name);
    1.29 +                 impl == null && e.scope != null;
    1.30 +                 e = e.next()) {
    1.31 +                if (this.overrides(e.sym, (TypeSymbol)owner, types, true) &&
    1.32 +                    // FIXME: I suspect the following requires a
    1.33 +                    // subst() for a parametric return type.
    1.34 +                    types.isSameType(type.getReturnType(),
    1.35 +                                     types.memberType(owner.type, e.sym).getReturnType())) {
    1.36 +                    impl = e.sym;
    1.37                  }
    1.38              }
    1.39              return impl;

mercurial