我正在为refchecks阶段编写一个 Scala 编译器插件。
给定调用点的符号,如何访问“超级”调用所指的符号?
例如,在
trait A {
def m() {}
}
trait B extends A {
def m() { super.m() }
}
知道调用点的符号super.m()
,我想获得 trait 的符号A
。
我认为使用自我类型注释和多重继承将为您服务:
trait HelperTrait {
def helperMethod {println("calling helperMethod of HelperTrait")}
}
trait PublicInterface { this: HelperTrait =>
def useHelperMethod
{
println("calling useHelperMethod of PublicInterface")
helperMethod
}
}
class ImplementationClass extends PublicInterface with HelperTrait
var obj = new ImplementationClass()
obj.useHelperMethod
obj.helperMethod