Метод расширения, при вызове на null объекте, вызывается не у того типа
fun main() {
val set: Set<Int>?
set = null
val emptySet: Set<Int> = set.orEmpty()
}
Не могу понять, почему даже при явной типизации переменной set как Set<Int>? компилятор считает что в методе расширения set.orEmpty() set - является строкой и, соответственно, падает с ошибкой:
Kotlin: Type mismatch: inferred type is String but Set was expected
Но при объявлении и инициализации в одной строке, всё происходит корректно:
fun main() {
val set: Set<Int>? = null
val emptySet: Set<Int> = set.orEmpty()
}