Я читаю руководство по метапрограммированию на Scala 3 и не нашел квазикотировки, которые активно использую в своем текущем проекте. Какова альтернатива такой деконструкции деревьев:
def impl(c: blackbox.Context): c.Expr[Unit] = {
import c.universe._
val someTree = //...
someTree match {
case typedef @ q"$mods type $name[..$tparams] >: $low <: $high" =>
//...
}
}
Как портировать такой код с деконструкцией дерева на Scala 3?
(извините за мой предыдущий комментарий. Я удалил). вам может повезти больше, если вы спросите здесь: gitter.im/lampepfl/dotty
Вы можете сопоставлять шаблоны с Expr
s в Scala 3:
Хотя у меня нет ответа на этот вопрос, и мне самому любопытно, автор Quill провел исследование переноса макросов Quill на Doobie на github.com/deusaquilus/dotty_test — возможно, импортировав это в IDE и прочитав код вы можете найти, какие решения использовал автор, когда способ метапрограммирования в Scala полностью изменился.