[FIR2IR] Add problematic test with incorrect type argument

NB: we should not have <E> as AbstractFirBasedSymbol type argument,
because it isn't accessible in the current scope. Star expected instead.
This commit is contained in:
Mikhail Glukhikh
2020-09-01 16:07:09 +03:00
parent b395771d01
commit 267382d86b
5 changed files with 331 additions and 0 deletions
@@ -0,0 +1,20 @@
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) {}
}