例如,要获取宏的呼叫站点上的所有值及其类型吗? 或者至少只是当前班级的价值? E.g:
class A {
val v1 = 10
var v2 = "2"
def m {
val m3 = true
// Here I would like to get information that v1: Int, v2: String and
// v3: Boolean are available
macroInvocation()
}
}
我查看了Context和Universe,但找不到好的方法。
到目前为止,我找到的唯一解决方案是获取宏的封闭类/方法(通过Context),然后搜索树。
答案 0 :(得分:2)
到目前为止我找到的唯一解决方案是获取宏的封闭类/方法(通过Context),并搜索树
我觉得你的意思是你实际上正在检查AST本身以提取声明的字段。你不必那样做。
如果c
是您的Context
值,则可以执行以下操作:
c.enclosingClass.symbol.typeSignature.members