Я пытаюсь получить полные имена «объектов» 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
}