5

Piszę wtyczkę kompilatora Scala dla fazy refchecks.Uzyskaj symbol, do którego odwołuje się "super" w Scala

Jak uzyskać dostęp do symbol, do którego odnosi się "super" połączenie, biorąc pod uwagę symbol miejsca zadzwonienia?

Na przykład w

trait A { 
    def m() {} 
} 

trait B extends A { 
    def m() { super.m() } 
} 

znając symbolu dla callsite super.m(), chciałbym uzyskać symbol dla cechy A.

+0

są getClass() i classOf() dla konkretnych przypadkach i klas/typów nie to, co chcesz lub nie są dostępne w tej fazie? –

Odpowiedz

1

myślę korzystania z zaworem adnotacji i wielokrotne dziedziczenie będzie służył:

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 
Powiązane problemy