никогда не становился never. То есть, вычисление вообще не происходило.
Есть пример, где оно уже произошло?
> и ожидаемое поведение - чтобы тут не было ошибки
Когда я пишу var _: T & U = (x as X), я ожидаю лишь то, что тайпчекер сначала проверит x <: T. Если это неверно, проверит X <: U. Если и это неверно, выдаст ошибку. Я не ожидаю никакого дополнительного поведения для конкретных значений T и U.
Аналогично с обратным направлением:
var _: A = (x as T & U). Ожидаю проверку лишь T <: A / U <: A, иначе ошибку.
Новое поведение может быть более удобно и практично, но я не вижу унифицированности с остальным тайпчекером.
но у тебя неверное ожидание, вот эти проверки T и U это пример реализации проверки X <: T & U, но неверной
Обсуждают сегодня