--- 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;