267382d86b
NB: we should not have <E> as AbstractFirBasedSymbol type argument, because it isn't accessible in the current scope. Star expected instead.
20 lines
629 B
Kotlin
Vendored
20 lines
629 B
Kotlin
Vendored
class Candidate(val symbol: AbstractFirBasedSymbol<*>)
|
|
|
|
abstract class AbstractFirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
|
lateinit var fir: E
|
|
}
|
|
|
|
interface FirDeclaration
|
|
|
|
interface FirSymbolOwner<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
|
val symbol: AbstractFirBasedSymbol<E>
|
|
}
|
|
|
|
interface FirCallableMemberDeclaration<F : FirCallableMemberDeclaration<F>> : FirSymbolOwner<F>, FirDeclaration {
|
|
override val symbol: AbstractFirBasedSymbol<F>
|
|
}
|
|
|
|
fun foo(candidate: Candidate) {
|
|
val me = candidate.symbol.fir
|
|
if (me is FirCallableMemberDeclaration<*> && me.symbol != null) {}
|
|
} |