langtools/src/share/classes/com/sun/tools/javac/comp/Check.java
changeset 8044 7fd529d4472c
parent 8037 b3f278fe95d6
child 8045 df2ca0edfbaa
equal deleted inserted replaced
8043:c19058ce05e8 8044:7fd529d4472c
   798 
   798 
   799             while (args.nonEmpty() && tvars.nonEmpty()) {
   799             while (args.nonEmpty() && tvars.nonEmpty()) {
   800                 Type actual = types.subst(args.head,
   800                 Type actual = types.subst(args.head,
   801                     type.tsym.type.getTypeArguments(),
   801                     type.tsym.type.getTypeArguments(),
   802                     tvars_buf.toList());
   802                     tvars_buf.toList());
   803                 if (!checkExtends(actual, (TypeVar)tvars.head)) {
   803                 if (!checkExtends(actual, (TypeVar)tvars.head) &&
       
   804                         !tvars.head.getUpperBound().isErroneous()) {
   804                     return args.head;
   805                     return args.head;
   805                 }
   806                 }
   806                 args = args.tail;
   807                 args = args.tail;
   807                 tvars = tvars.tail;
   808                 tvars = tvars.tail;
   808             }
   809             }
   809 
   810 
   810             args = type.getTypeArguments();
   811             args = type.getTypeArguments();
       
   812             tvars = tvars_buf.toList();
   811 
   813 
   812             for (Type arg : types.capture(type).getTypeArguments()) {
   814             for (Type arg : types.capture(type).getTypeArguments()) {
   813                 if (arg.tag == TYPEVAR && arg.getUpperBound().isErroneous()) {
   815                 if (arg.tag == TYPEVAR &&
       
   816                         arg.getUpperBound().isErroneous() &&
       
   817                         !tvars.head.getUpperBound().isErroneous()) {
   814                     return args.head;
   818                     return args.head;
   815                 }
   819                 }
       
   820                 tvars = tvars.tail;
   816             }
   821             }
   817 
   822 
   818             return null;
   823             return null;
   819         }
   824         }
   820 
   825