我正在为refchecks阶段编写一个Scala编译器插件。
在给定呼叫站点的符号的情况下,如何访问“超级”呼叫所指的symbol?
例如,在
中trait A {
def m() {}
}
trait B extends A {
def m() { super.m() }
}
知道调用网站super.m()
的符号,我想获得特征A
的符号。
答案 0 :(得分:1)
我认为使用自我类型注释和多重继承将为您服务:
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