Да, юзкейс понятный. Мы, в принципе, могли бы сделать так: генерировать версию, где все параметры подставлены, вдобавок к тому, что генерируется сейчас.
Были экстремистские идеи сделать все варианты, но мне это кажется несколько через чур. :)
1. Не совсем. В текущей версии дизацна запланированы GADT, под менем enum-классов. Они частично уже поддержаны, частично будут, скорее всего, поддержаны позже.
Однако я бы не демонизировал так выбрасывание исключений в последней ветке. Это обычный assertion: упадет и все, а вот NPE — это бомба замедленного действия: когда упадет, не понятно, в чем его причина.
2. Да, конечно
3. Скорее нет, чем да, а что именно Вас интересует?
В этом нет никакой проблемы: конструкторы классов и функции живут в одном пространстве имен (в Kotlin нет оператора new), и имена разрешаются точно так же как обычные перегруженные функции.
fun A(...): A = A(...) class A(...) { ... }
Были экстремистские идеи сделать все варианты, но мне это кажется несколько через чур. :)
Вообще, баги лучше репортить в трекер.
Про конструктор я не совсем понял: какой в точности юзкейс имеется в виду?
Однако я бы не демонизировал так выбрасывание исключений в последней ветке. Это обычный assertion: упадет и все, а вот NPE — это бомба замедленного действия: когда упадет, не понятно, в чем его причина.
2. Да, конечно
3. Скорее нет, чем да, а что именно Вас интересует?