equal
deleted
inserted
replaced
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 |