--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Wed Apr 02 11:38:16 2008 +0100
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Wed Apr 02 11:44:23 2008 +0100
@@ -407,6 +407,8 @@
Type site,
Name name,
TypeSymbol c) {
+ while (c.type.tag == TYPEVAR)
+ c = c.type.getUpperBound().tsym;
Symbol bestSoFar = varNotFound;
Symbol sym;
Scope.Entry e = c.members().lookup(name);
@@ -418,7 +420,7 @@
e = e.next();
}
Type st = types.supertype(c.type);
- if (st != null && st.tag == CLASS) {
+ if (st != null && (st.tag == CLASS || st.tag == TYPEVAR)) {
sym = findField(env, site, name, st.tsym);
if (sym.kind < bestSoFar.kind) bestSoFar = sym;
}
@@ -733,7 +735,9 @@
boolean allowBoxing,
boolean useVarargs,
boolean operator) {
- for (Type ct = intype; ct.tag == CLASS; ct = types.supertype(ct)) {
+ for (Type ct = intype; ct.tag == CLASS || ct.tag == TYPEVAR; ct = types.supertype(ct)) {
+ while (ct.tag == TYPEVAR)
+ ct = ct.getUpperBound();
ClassSymbol c = (ClassSymbol)ct.tsym;
if ((c.flags() & (ABSTRACT | INTERFACE)) == 0)
abstractok = false;