Закрытые классы Kotlin - почему компилятор не проверяет все подтипы?

При использовании закрытых классов компилятор проверяет только подтипы в одном и том же файле.

Одним из главных преимуществ продаж закрытых классов являются исчерпывающие проверки при использовании when выражение. Так почему же это не реализовано?

В 1 файле у меня есть:

class C : B()

В другом файле у меня есть:

sealed class A

open class B : A()

fun switch(input: A) =
    when(input) {
        is B -> Unit
//        is C -> Unit - I expect a compiler error since this is a subtype and it's commented out
    }

1 ответ

Как прокомментировал Евгений Петренко, is B случай, который требуется компилятору, охватывает все подклассы B.

Другие вопросы по тегам