langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java
changeset 326 d51f30ce6796
parent 10 06bc494ca11e
child 659 34b10b154015
--- 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;