Метод расширения, при вызове на 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()
}

Ответы (0 шт):