如何在宏中获取Scala宏注释的类或对象的扩展类路径?

时间:2018-11-06 18:29:26

标签: scala macros

如果我编写了要应用于Scala对象或类的Scala宏,是否可以在宏中获取该带注释的实体的扩展类路径? (出于某种原因,我最终希望将它作为字符串,由宏写入文件中。)

我需要包含该实体的com.foo.bar程序包,或者需要一种从带注释的MyClass直接获取扩展的com.foo.bar.MyClass类路径的方法。

1 个答案:

答案 0 :(得分:0)

好吧,不确定这是否是最好的方法,但是对我有用的解决方案是使用准引用并使用上下文来编译“探针”类:

导入c.universe._    val probe = c.typecheck(q“”“ {class $$$$ Pr0bE $$$$;()}”“”)

然后可以请求该“探针”(在我的情况下是一个程序包)的所有者,然后跟踪所有者直至“根”,从而从该根和被通知者的名称构造出完全合格的类路径。