b454fcc1e0
This is needed to avoid clashes between different dumps from different handlers
53 lines
1.1 KiB
Kotlin
Vendored
53 lines
1.1 KiB
Kotlin
Vendored
class Candidate {
|
|
constructor(symbol: AbstractFirBasedSymbol<*>) /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
val symbol: AbstractFirBasedSymbol<*>
|
|
field = symbol
|
|
get
|
|
|
|
}
|
|
|
|
abstract class AbstractFirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
|
constructor() /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
lateinit var fir: E
|
|
get
|
|
set
|
|
|
|
}
|
|
|
|
interface FirDeclaration {
|
|
|
|
}
|
|
|
|
interface FirSymbolOwner<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
|
abstract val symbol: AbstractFirBasedSymbol<E>
|
|
abstract get
|
|
|
|
}
|
|
|
|
interface FirCallableMemberDeclaration<F : FirCallableMemberDeclaration<F>> : FirSymbolOwner<F>, FirDeclaration {
|
|
abstract override val symbol: AbstractFirBasedSymbol<F>
|
|
abstract override get
|
|
|
|
}
|
|
|
|
fun foo(candidate: Candidate) {
|
|
val me: FirSymbolOwner<*> = candidate.<get-symbol>().<get-fir>()
|
|
when {
|
|
when {
|
|
me is FirCallableMemberDeclaration<*> -> EQEQ(arg0 = me /*as FirCallableMemberDeclaration<out FirCallableMemberDeclaration<*>> */.<get-symbol>(), arg1 = null).not()
|
|
else -> false
|
|
} -> { // BLOCK
|
|
}
|
|
}
|
|
}
|