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

changeset 155
4d2d8b6459e1
parent 121
609fb59657b4
child 308
03944ee4fac4
equal deleted inserted replaced
154:6508d7e812e1 155:4d2d8b6459e1
359 case 0: 359 case 0:
360 PackageSymbol thisPackage = this.packge(); 360 PackageSymbol thisPackage = this.packge();
361 for (Symbol sup = clazz; 361 for (Symbol sup = clazz;
362 sup != null && sup != this.owner; 362 sup != null && sup != this.owner;
363 sup = types.supertype(sup.type).tsym) { 363 sup = types.supertype(sup.type).tsym) {
364 while (sup.type.tag == TYPEVAR)
365 sup = sup.type.getUpperBound().tsym;
364 if (sup.type.isErroneous()) 366 if (sup.type.isErroneous())
365 return true; // error recovery 367 return true; // error recovery
366 if ((sup.flags() & COMPOUND) != 0) 368 if ((sup.flags() & COMPOUND) != 0)
367 continue; 369 continue;
368 if (sup.packge() != thisPackage) 370 if (sup.packge() != thisPackage)
1181 /** The implementation of this (abstract) symbol in class origin; 1183 /** The implementation of this (abstract) symbol in class origin;
1182 * null if none exists. Synthetic methods are not considered 1184 * null if none exists. Synthetic methods are not considered
1183 * as possible implementations. 1185 * as possible implementations.
1184 */ 1186 */
1185 public MethodSymbol implementation(TypeSymbol origin, Types types, boolean checkResult) { 1187 public MethodSymbol implementation(TypeSymbol origin, Types types, boolean checkResult) {
1186 for (Type t = origin.type; t.tag == CLASS; t = types.supertype(t)) { 1188 for (Type t = origin.type; t.tag == CLASS || t.tag == TYPEVAR; t = types.supertype(t)) {
1189 while (t.tag == TYPEVAR)
1190 t = t.getUpperBound();
1187 TypeSymbol c = t.tsym; 1191 TypeSymbol c = t.tsym;
1188 for (Scope.Entry e = c.members().lookup(name); 1192 for (Scope.Entry e = c.members().lookup(name);
1189 e.scope != null; 1193 e.scope != null;
1190 e = e.next()) { 1194 e = e.next()) {
1191 if (e.sym.kind == MTH) { 1195 if (e.sym.kind == MTH) {

mercurial