Уточните полное имя модуля в Scala, используя отражение во время компиляции
Я пытаюсь получить полные имена "объектов" Scala (они также называются "модулями" в API отражений) во время компиляции с использованием макроаннотаций. Я не могу использовать отражение времени выполнения, потому что я нацеливаюсь на время выполнения JavaScript.
Вот текущая реализация макроса у меня сейчас:
def impl(c: Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
import c.universe._
val inputs = annottees.map(_.tree).toList
val module = inputs.head match {
case x: ModuleDef => Some(x)
case _ => None
}
module.foreach { m =>
//Get the fully qualified name of "m" and perform some side effects during compilation
???
}
annottees.head
}