langtools/src/share/classes/com/sun/tools/javac/comp/Check.java
changeset 8044 7fd529d4472c
parent 8037 b3f278fe95d6
child 8045 df2ca0edfbaa
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Wed Jan 19 19:01:35 2011 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Mon Jan 24 15:44:15 2011 +0000
@@ -800,7 +800,8 @@
                 Type actual = types.subst(args.head,
                     type.tsym.type.getTypeArguments(),
                     tvars_buf.toList());
-                if (!checkExtends(actual, (TypeVar)tvars.head)) {
+                if (!checkExtends(actual, (TypeVar)tvars.head) &&
+                        !tvars.head.getUpperBound().isErroneous()) {
                     return args.head;
                 }
                 args = args.tail;
@@ -808,11 +809,15 @@
             }
 
             args = type.getTypeArguments();
+            tvars = tvars_buf.toList();
 
             for (Type arg : types.capture(type).getTypeArguments()) {
-                if (arg.tag == TYPEVAR && arg.getUpperBound().isErroneous()) {
+                if (arg.tag == TYPEVAR &&
+                        arg.getUpperBound().isErroneous() &&
+                        !tvars.head.getUpperBound().isErroneous()) {
                     return args.head;
                 }
+                tvars = tvars.tail;
             }
 
             return null;