багтрекере не нашёл)
interface A
interface NotA
fun <T : A> findA(): T = TODO()
fun test() {
val notA: NotA = findA() // компилится
val notA2 = findA<NotA>() // не компилится
// Type argument is not within its bounds.
// Expected: A
// Found: NotA
}
Думаю, сверху findA<Nothing>
Мне казалось, автовывод Nothing запрещён или хотя бы должен вывести предупреждение. Иначе слишком легко выстрелить в ногу и получить проблемы в рантайме.
да, вот это и смущало, что нет ни ошибки, ни ворнинга, вообще ничего выходит писать val t: T немного опасно и лучше передавать явно тип в функцию, которые поддаются компайл проверкам
Мне кажется, стоит завести баг. До 1.4 была такая ошибка: Type parameter bound for T in fun <T : A> findA(): T is not satisfied: inferred type NotA is not a subtype of A А выводить Nothing в такой ситуации - это дичь.
Обсуждают сегодня