Size: a a a

Kotlin Community

2020 April 15

SB

Sergey Barmin in Kotlin Community
источник

AL

Alexander Levin in Kotlin Community
>Completion goes into an infinite loop with Arrow 0.10.4 dependency
>Destructuring declarations are called "destruction declarations" in UI

Какой же хороший ченджлог
источник

VP

Vladimir Petrakovich in Kotlin Community
Видимо, весь релиз ради KT-37808
источник

SB

Sergey Barmin in Kotlin Community
Alexander Levin
>Completion goes into an infinite loop with Arrow 0.10.4 dependency
>Destructuring declarations are called "destruction declarations" in UI

Какой же хороший ченджлог
> Kotlin localisation
тоже неплохо звучит)
источник

АО

Алексей Овсянников in Kotlin Community
Vladimir Petrakovich
Видимо, весь релиз ради KT-37808
Ну болючая штука, к слову
источник

АО

Алексей Овсянников in Kotlin Community
Приходилось эскейпать кучу раз, чтобы быстрее разфризилось
источник

B

Beholder in Kotlin Community
Но зато 1.4 вроде уже milestone 2
источник

V

Vladimir in Kotlin Community
добрый день. Работали ли вы с котлиновскими dsl? Покоя не даёт алгоритм, который находит this внутри лямбд с ресивером: https://gist.github.com/mechmind/df4103769b9209f2b5b3a4f263e80720 -- у класса Action нет метода inner, автомагическим способом второй вызов биндится на dsl.inner {}. Я порылся в документации и нашёл только аннотацию DslMarker, который это явно запрещает, но ссылки на сами правила не могу найти.
источник

BP

Bogdan Panchenko in Kotlin Community
Vladimir
добрый день. Работали ли вы с котлиновскими dsl? Покоя не даёт алгоритм, который находит this внутри лямбд с ресивером: https://gist.github.com/mechmind/df4103769b9209f2b5b3a4f263e80720 -- у класса Action нет метода inner, автомагическим способом второй вызов биндится на dsl.inner {}. Я порылся в документации и нашёл только аннотацию DslMarker, который это явно запрещает, но ссылки на сами правила не могу найти.
Ну их описания я не видел, их можно вывести из примера в доках либо посмотрев на ktor и kotlin html/css
источник

V

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

BP

Bogdan Panchenko in Kotlin Community
Vladimir
вот именно описание мне и нужно и как с такими штуками работать. Вот например, есть у меня развесистый dsl с несколькими вложенными контекстами и я хочу отрефакторить и некоторые вложенные кусочки вынести в отдельные функции. Можно ли передать всю эту магию поиска this каким-то образом в такую функцию или нет?
Ну если она с ресивером то да
источник

V

Vladimir in Kotlin Community
суть в том, что у внутреннего кода this резолвится неоднозначно. Из того, что сейчас я понял, что там стек контекстов и компилятор пробует найти свойство/метод сначала в самом глубоком, потом в родителе, потом в его родителе итд
источник

AN

Alexander Nozik in Kotlin Community
Vladimir
суть в том, что у внутреннего кода this резолвится неоднозначно. Из того, что сейчас я понял, что там стек контекстов и компилятор пробует найти свойство/метод сначала в самом глубоком, потом в родителе, потом в его родителе итд
Стэк контекстов вынести к сожалению никуда нельзя потому что нету KEEP-176. Можно только преобравзовать их в параметры в месте вызова
источник

VP

Vladimir Petrakovich in Kotlin Community
Vladimir
добрый день. Работали ли вы с котлиновскими dsl? Покоя не даёт алгоритм, который находит this внутри лямбд с ресивером: https://gist.github.com/mechmind/df4103769b9209f2b5b3a4f263e80720 -- у класса Action нет метода inner, автомагическим способом второй вызов биндится на dsl.inner {}. Я порылся в документации и нашёл только аннотацию DslMarker, который это явно запрещает, но ссылки на сами правила не могу найти.
Не совсем понял, о каких правилах речь, но как пользоваться @DslMarker описано тут:
https://kotlinlang.org/docs/reference/type-safe-builders.html#scope-control-dslmarker-since-11
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Не совсем понял, о каких правилах речь, но как пользоваться @DslMarker описано тут:
https://kotlinlang.org/docs/reference/type-safe-builders.html#scope-control-dslmarker-since-11
Он наоборот хочет не заизолировать внешние контексты, а использовать. Если я правильно понял
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Он наоборот хочет не заизолировать внешние контексты, а использовать. Если я правильно понял
Ну исходная проблема в gist, как я понял, именно такая
источник

V

Vladimir in Kotlin Community
я понял (условно), как работает DslContext, он предотвращает такие вызовы. Но как работает сам алгоритм не описано
источник

V

Vladimir in Kotlin Community
в документации к DslContext - https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-dsl-marker/ - есть такая строчка:

-- other available receivers are resolved as usual [...]

но не могу найти, как это as usual
источник

AN

Alexander Nozik in Kotlin Community
Vladimir
я понял (условно), как работает DslContext, он предотвращает такие вызовы. Но как работает сам алгоритм не описано
Он просто не дает обращаться к полям внешнего контекста без явного this.
источник

V

Vladimir in Kotlin Community
похоже на резолвинг this для inner классов
источник