[FIR] Fix calculating arguments of bare type with intersection type as base
This commit is contained in:
committed by
TeamCityServer
parent
56f9e3360f
commit
d40777c28f
@@ -0,0 +1,21 @@
|
||||
FILE: castToBareType.kt
|
||||
public abstract interface FirDeclaration : R|kotlin/Any| {
|
||||
}
|
||||
public abstract interface FirSymbolOwner<E : R|FirSymbolOwner<E>|> : R|kotlin/Any| {
|
||||
public abstract val symbol: R|AbstractFirBasedSymbol<E>|
|
||||
public get(): R|AbstractFirBasedSymbol<E>|
|
||||
|
||||
}
|
||||
public abstract interface FirFunction<F : R|FirFunction<F>|> : R|FirSymbolOwner<F>|, R|FirDeclaration| {
|
||||
}
|
||||
public abstract interface AbstractFirBasedSymbol<E : R|FirSymbolOwner<E>|, R|FirDeclaration|> : R|kotlin/Any| {
|
||||
public abstract val fir: R|E|
|
||||
public get(): R|E|
|
||||
|
||||
}
|
||||
public final fun foo(firAdaptee: R|FirFunction<*>|): R|kotlin/Unit| {
|
||||
}
|
||||
public final fun test(symbol: R|AbstractFirBasedSymbol<*>|): R|kotlin/Unit| {
|
||||
lval firAdaptee: R|FirFunction<out it(FirSymbolOwner<out it(FirSymbolOwner<out it(FirSymbolOwner<out it(FirSymbolOwner<out kotlin/Any?> & FirDeclaration)> & FirDeclaration)> & FirDeclaration)> & FirDeclaration)>| = (R|<local>/symbol|.R|SubstitutionOverride</AbstractFirBasedSymbol.fir: R|CapturedType(*)|>| as R|FirFunction<out it(FirSymbolOwner<out it(FirSymbolOwner<out it(FirSymbolOwner<out it(FirSymbolOwner<out kotlin/Any?> & FirDeclaration)> & FirDeclaration)> & FirDeclaration)> & FirDeclaration)>|)
|
||||
R|/foo|(R|<local>/firAdaptee|)
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
interface FirDeclaration
|
||||
|
||||
interface FirSymbolOwner<E : FirSymbolOwner<E>> {
|
||||
val symbol: AbstractFirBasedSymbol<E>
|
||||
}
|
||||
interface FirFunction<F : FirFunction<F>> : FirSymbolOwner<F>, FirDeclaration
|
||||
|
||||
interface AbstractFirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
||||
val fir: E
|
||||
}
|
||||
|
||||
fun foo(firAdaptee: FirFunction<*>) {}
|
||||
|
||||
fun test(symbol: AbstractFirBasedSymbol<*>) {
|
||||
val firAdaptee = symbol.fir as FirFunction
|
||||
foo(firAdaptee)
|
||||
}
|
||||
Reference in New Issue
Block a user