Уточните полное имя модуля в Scala, используя отражение во время компиляции - PullRequest
0 голосов
/ 09 ноября 2018

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

}

...