Function?
Сейчас нет
А о каких именно лямбдах речь? Я что-то так и не понял.
У него там параметром передается функция произвольной арности. Я вообще не уверен, что это как-то можно проанализировать
Ну если мы допускаем только прямое применение лямбды, а не передачу всякой функции, то это 100% возможно.
Ну если inline метод и мы знаем какая функция передается, как reified
Как ты сейчас в текущем dsl это собирался доставать? 🤔
Я говорю не про рефлект.
Ну даже и не-inline fun magic(f: Function<*>) magic { a: String, b: Int -> ... } Из подобного кода мы просто по месту вызова видим типы параметров. Но произвольную функцию тогда не передать. Разве что известный method reference еще.
Видим - в плане компиляторный плагин видит.
А как параметры узнать внутри magic?
Внутри magic - если плагин подскажет как-нибудь.
На каждую комбинацию параметров?
Нет, конечно, просто заменить место вызова.
Я вот что не понимаю: а зачем вам это? Почему пользователь не может сам где-то указать типы?
Ну или почему вам нужно больше n параметров?
Еще раз: Берем функцию, узнаем типы, находим нужные инстансы - вызываем Берем лямбду, узнаем типы, находим нужные инстансы, вызываем - падаем
То есть это какое-то хитрое сопоставление двух функций?
Обсуждают сегодня