在定义Scala宏时,是否有从Symbol或Type到Tree的方法



在定义Scala宏时,是否有从Symbol或Type到Tree的方法?

具体来说,这个场景想要在一个伴随对象上查找一个文字。

在scala代码中,这看起来像这样:

class Fred(a: String)
object Fred {
val FredDescription = "hello"
}

在宏中,我可以访问Fred的WeakTypeTag,并可以使用它来访问伴随及其类型签名:

context.universe.weakTypeOf[A].typeSymbol.companionSymbol.typeSignature

但我看不到任何访问文本或树的方法来匹配伴随对象的文本。

这可能吗?有没有一个技巧来获得某个任意类型或符号的树?

在某些情况下,这可能是可能的,例如,当类型在调用宏的同一文件中定义时,但在一般情况下,我预计不会。

这是因为您正在检查的类型或符号可能来自已编译的类文件。在这种情况下,您要查找的树根本不存在。

相关内容

最新更新