Size: a a a

Kotlin Community

2020 June 01

P

Phoenix in Kotlin Community
а что эт за магия и почему это плохо?
источник

VP

Vladimir Petrakovich in Kotlin Community
Phoenix
а что эт за магия и почему это плохо?
Ну начнём с того, что это internal аннотация, и чисто теоретически ещё могут выпилить в любом релизе
источник

IK

Igor Komarov in Kotlin Community
Очень странный вопрос: есть ли аннотация противоположная Throws в котлине?

Ситуация следующая: у меня есть конечное перечисление исключений определенного супертипа. И есть метод, который может выбросить любое из исключений-наследников, кроме одного, на что мне важно обратить программерское внимание. Что-нибудь типа NeverThrows было бы крайне кстати..
источник

P

Phoenix in Kotlin Community
Vladimir Petrakovich
Ну начнём с того, что это internal аннотация, и чисто теоретически ещё могут выпилить в любом релизе
Но замену ведь предоставят
источник

IK

Igor Komarov in Kotlin Community
Писать Throws на каждый конкретный тип – убиться веником, это как вариант не рассматривается в принципе
источник

D

Denys in Kotlin Community
Igor Komarov
Очень странный вопрос: есть ли аннотация противоположная Throws в котлине?

Ситуация следующая: у меня есть конечное перечисление исключений определенного супертипа. И есть метод, который может выбросить любое из исключений-наследников, кроме одного, на что мне важно обратить программерское внимание. Что-нибудь типа NeverThrows было бы крайне кстати..
Нет, можно в документации указать
источник

AN

Alexander Nozik in Kotlin Community
Igor Komarov
Писать Throws на каждый конкретный тип – убиться веником, это как вариант не рассматривается в принципе
А текстом написать? Throws только в смысле документации работает
источник

IK

Igor Komarov in Kotlin Community
Alexander Nozik
А текстом написать? Throws только в смысле документации работает
Ну, видимо так и сделаю. Спасибо
источник

BP

Bogdan Panchenko in Kotlin Community
Phoenix
Но замену ведь предоставят
Не факт
источник

P

Phoenix in Kotlin Community
Vladimir Petrakovich
Ну начнём с того, что это internal аннотация, и чисто теоретически ещё могут выпилить в любом релизе
ну пока работает то ок если вырубят то ничего страшного, так как это лишь вспомогательная проверка. Спасибо за помощь)
источник

AA

Andrey Antipov in Kotlin Community
Phoenix
ну пока работает то ок если вырубят то ничего страшного, так как это лишь вспомогательная проверка. Спасибо за помощь)
Вот есть по теме дискуссия https://discuss.kotlinlang.org/t/is-it-possible-to-fix-generic-type-to-the-type-of-the-first-parameter/1871
Там предлагают вариант
fun main() {
   Wrap("foo")::prop.bar("1") // не работает, хотя должно
   (Wrap("foo")::prop.bar)("1") // так работает
   Wrap("foo")::prop.bar(1) // не работает и не должно
}

class Wrap(val prop: String)

val <T> KProperty0<T>.bar: (T) -> Unit
   get() = {
       println(this())
       println(it)
   }

но он не работает как надо из-за баги в компиляторе
источник

P

Phoenix in Kotlin Community
Andrey Antipov
Вот есть по теме дискуссия https://discuss.kotlinlang.org/t/is-it-possible-to-fix-generic-type-to-the-type-of-the-first-parameter/1871
Там предлагают вариант
fun main() {
   Wrap("foo")::prop.bar("1") // не работает, хотя должно
   (Wrap("foo")::prop.bar)("1") // так работает
   Wrap("foo")::prop.bar(1) // не работает и не должно
}

class Wrap(val prop: String)

val <T> KProperty0<T>.bar: (T) -> Unit
   get() = {
       println(this())
       println(it)
   }

но он не работает как надо из-за баги в компиляторе
впервые сталкиваюсь с багами в компиляторе котлина. Сяб)
источник

AN

Alexander Nozik in Kotlin Community
Phoenix
впервые сталкиваюсь с багами в компиляторе котлина. Сяб)
А они есть. Правда в основном на JS.
источник

AA

Andrey Antipov in Kotlin Community
https://youtrack.jetbrains.com/issue/KT-10364?_ga=2.170815459.2124504027.1591010924-1649569618.1568806626
Вот эта бага. Говорят, в new inference поправлено, но он по дефолту в 1.3.x компиляторе отключен
источник

VK

Vladyslav Kopaniev in Kotlin Community
Alexander Nozik
А они есть. Правда в основном на JS.
в корутинах наталкивался
источник

VK

Vladyslav Kopaniev in Kotlin Community
внутренняя suspend tailrec функция в бесконечный цикл в байткоде превращается
источник

AN

Alexander Nozik in Kotlin Community
В инлайн классах тоже есть кое-что, но это ж разве баги. Вот помню я в Borland C++ компиляторе бага была, когда программа переставала работать из-за лишнего пробела...
источник

VK

Vladyslav Kopaniev in Kotlin Community
Alexander Nozik
В инлайн классах тоже есть кое-что, но это ж разве баги. Вот помню я в Borland C++ компиляторе бага была, когда программа переставала работать из-за лишнего пробела...
🤣
источник

P

Phoenix in Kotlin Community
Мне кажется я исчерпал свой лимит вопросов на сегодня, но всё же. Есть какие-нибудь костыли для реализации экстеншн функций с двумя получателями, кроме наследования?
источник

D

Denys in Kotlin Community
Phoenix
Мне кажется я исчерпал свой лимит вопросов на сегодня, но всё же. Есть какие-нибудь костыли для реализации экстеншн функций с двумя получателями, кроме наследования?
Чтобы одна функция для FooA и FooB? Пока нету, только два раза писать.
источник