Уже больше года я использую в своих проектах библиотеку с иммутабельными коллекциями для Kotlin.
Всё радует, всем рекомендую, иммутабельность - залог отсутствия боли при дебаге 🙂
Однако была проблема - у меня в проекте много где ещё используется сериализация доменных сущностей в
Bundle.Соответственно, их нужно делать
Parcelable.И этот факт добавляет большую проблему -
kotlinx-parcelize плагин (который даёт нам возможность аннотацией @Parcelize сгенерить реализацию Parcelable для класса) не поддерживает эти иммутабельные коллекции.Я с этим мирился до начала сентября, когда решил взять дело в свои руки и запилил эту поддержку самостоятельно.
Весь процесс был не сильно сложным, но жутко интересным, рекомендую покопаться в компиляторе котлина на досуге 🙂
По сути всё что нужно было сделать - добавить генерацию вызова
,toPersistent(List|Set|Map) тогда когда нужно.Ну и по пути порефакторил ещё слегка.
А сегодня наконец-то случился мердж моего пулл реквеста! (https://github.com/JetBrains/kotlin/pull/5184#issuecomment-1743915972)
Так что я теперь официально могу называть себя контрибутором в компилятор котлина 😁)
Вероятно в Kotlin 2.0 Beta 1 мой контрибушен будет доступен всем пользователям.
