здесь идея ругается на пересекающиеся декларации:
fun <T> IOr<T, T>.flatten(): List<Option<T>> { ... }
fun <T> IOr<IOr<T, T>, T>.flatten(): List<Option<T>> { ... }
?
Теоретически ведь это разные типы
одинаковая JVM-сигнатура
Type erasure передаёт привет
дженерики ведь не сохраняются в байт коде, из-за этого функции и считаются одинаковыми
Обсуждают сегодня