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