[FIR2IR] Approximate non-denotable types when converting ConeType to IrType
This commit is contained in:
committed by
TeamCityServer
parent
c271f953d7
commit
da0fd7cc15
@@ -41,7 +41,7 @@ interface FirCallableMemberDeclaration<F : FirCallableMemberDeclaration<F>> : Fi
|
||||
}
|
||||
|
||||
fun foo(candidate: Candidate) {
|
||||
val me: FirSymbolOwner<out FirSymbolOwner<out FirSymbolOwner<out FirSymbolOwner<out FirSymbolOwner<out Any?>>>>> = candidate.<get-symbol>().<get-fir>()
|
||||
val me: FirSymbolOwner<*> = candidate.<get-symbol>().<get-fir>()
|
||||
when {
|
||||
when {
|
||||
me is FirCallableMemberDeclaration<*> -> EQEQ(arg0 = me /*as FirCallableMemberDeclaration<*> */.<get-symbol>(), arg1 = null).not()
|
||||
|
||||
@@ -130,8 +130,8 @@ FILE fqName:<root> fileName:/candidateSymbol.kt
|
||||
FUN name:foo visibility:public modality:FINAL <> (candidate:<root>.Candidate) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:candidate index:0 type:<root>.Candidate
|
||||
BLOCK_BODY
|
||||
VAR name:me type:<root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out kotlin.Any?>>>>> [val]
|
||||
CALL 'public final fun <get-fir> (): E of <root>.AbstractFirBasedSymbol declared in <root>.AbstractFirBasedSymbol' type=<root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out kotlin.Any?>>>>> origin=GET_PROPERTY
|
||||
VAR name:me type:<root>.FirSymbolOwner<*> [val]
|
||||
CALL 'public final fun <get-fir> (): E of <root>.AbstractFirBasedSymbol declared in <root>.AbstractFirBasedSymbol' type=<root>.FirSymbolOwner<*> origin=GET_PROPERTY
|
||||
$this: CALL 'public final fun <get-symbol> (): <root>.AbstractFirBasedSymbol<*> declared in <root>.Candidate' type=<root>.AbstractFirBasedSymbol<*> origin=GET_PROPERTY
|
||||
$this: GET_VAR 'candidate: <root>.Candidate declared in <root>.foo' type=<root>.Candidate origin=null
|
||||
WHEN type=kotlin.Unit origin=IF
|
||||
@@ -139,12 +139,12 @@ FILE fqName:<root> fileName:/candidateSymbol.kt
|
||||
if: WHEN type=kotlin.Boolean origin=ANDAND
|
||||
BRANCH
|
||||
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.FirCallableMemberDeclaration<*>
|
||||
GET_VAR 'val me: <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out kotlin.Any?>>>>> [val] declared in <root>.foo' type=<root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out kotlin.Any?>>>>> origin=null
|
||||
GET_VAR 'val me: <root>.FirSymbolOwner<*> [val] declared in <root>.foo' type=<root>.FirSymbolOwner<*> origin=null
|
||||
then: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
|
||||
$this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
|
||||
arg0: CALL 'public abstract fun <get-symbol> (): <root>.AbstractFirBasedSymbol<F of <root>.FirCallableMemberDeclaration> declared in <root>.FirCallableMemberDeclaration' type=<root>.AbstractFirBasedSymbol<out <root>.FirCallableMemberDeclaration<*>> origin=GET_PROPERTY
|
||||
$this: TYPE_OP type=<root>.FirCallableMemberDeclaration<*> origin=IMPLICIT_CAST typeOperand=<root>.FirCallableMemberDeclaration<*>
|
||||
GET_VAR 'val me: <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out kotlin.Any?>>>>> [val] declared in <root>.foo' type=<root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out <root>.FirSymbolOwner<out kotlin.Any?>>>>> origin=null
|
||||
GET_VAR 'val me: <root>.FirSymbolOwner<*> [val] declared in <root>.foo' type=<root>.FirSymbolOwner<*> origin=null
|
||||
arg1: CONST Null type=kotlin.Nothing? value=null
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
|
||||
Vendored
+1
-1
@@ -16,7 +16,7 @@ abstract class AbstractSymbol<E> where E : Recursive<E>, E : Something {
|
||||
}
|
||||
|
||||
fun foo(list: List<Any>) {
|
||||
val result: List<AbstractSymbol<out Recursive<*>>> = list.filterIsInstance<Recursive<*>>().map<Recursive<*>, AbstractSymbol<out Recursive<*>>>(transform = Recursive::symbol)
|
||||
val result: List<AbstractSymbol<*>> = list.filterIsInstance<Recursive<*>>().map<Recursive<*>, AbstractSymbol<*>>(transform = Recursive::symbol)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -45,14 +45,14 @@ FILE fqName:<root> fileName:/recursiveCapturedTypeInPropertyReference.kt
|
||||
$this: VALUE_PARAMETER name:<this> type:<root>.AbstractSymbol<E of <root>.AbstractSymbol>
|
||||
VALUE_PARAMETER name:list index:0 type:kotlin.collections.List<kotlin.Any>
|
||||
BLOCK_BODY
|
||||
VAR name:result type:kotlin.collections.List<<root>.AbstractSymbol<out <root>.Recursive<*>>> [val]
|
||||
CALL 'public final fun map <T, R> (transform: kotlin.Function1<T of kotlin.collections.CollectionsKt.map, R of kotlin.collections.CollectionsKt.map>): kotlin.collections.List<R of kotlin.collections.CollectionsKt.map> [inline] declared in kotlin.collections.CollectionsKt' type=kotlin.collections.List<<root>.AbstractSymbol<out <root>.Recursive<*>>> origin=null
|
||||
VAR name:result type:kotlin.collections.List<<root>.AbstractSymbol<*>> [val]
|
||||
CALL 'public final fun map <T, R> (transform: kotlin.Function1<T of kotlin.collections.CollectionsKt.map, R of kotlin.collections.CollectionsKt.map>): kotlin.collections.List<R of kotlin.collections.CollectionsKt.map> [inline] declared in kotlin.collections.CollectionsKt' type=kotlin.collections.List<<root>.AbstractSymbol<*>> origin=null
|
||||
<T>: <root>.Recursive<*>
|
||||
<R>: <root>.AbstractSymbol<out <root>.Recursive<*>>
|
||||
<R>: <root>.AbstractSymbol<*>
|
||||
$receiver: CALL 'public final fun filterIsInstance <R> (): kotlin.collections.List<R of kotlin.collections.CollectionsKt.filterIsInstance> [inline] declared in kotlin.collections.CollectionsKt' type=kotlin.collections.List<<root>.Recursive<*>> origin=null
|
||||
<R>: <root>.Recursive<*>
|
||||
$receiver: GET_VAR 'list: kotlin.collections.List<kotlin.Any> declared in <root>.AbstractSymbol.foo' type=kotlin.collections.List<kotlin.Any> origin=null
|
||||
transform: PROPERTY_REFERENCE 'public abstract symbol: <root>.AbstractSymbol<R of <root>.Recursive> [val]' field=null getter='public abstract fun <get-symbol> (): <root>.AbstractSymbol<R of <root>.Recursive> declared in <root>.Recursive' setter=null type=kotlin.reflect.KProperty1<<root>.Recursive<*>, <root>.AbstractSymbol<<root>.Recursive<*>>> origin=null
|
||||
transform: PROPERTY_REFERENCE 'public abstract symbol: <root>.AbstractSymbol<R of <root>.Recursive> [val]' field=null getter='public abstract fun <get-symbol> (): <root>.AbstractSymbol<R of <root>.Recursive> declared in <root>.Recursive' setter=null type=kotlin.reflect.KProperty1<<root>.Recursive<*>, <root>.AbstractSymbol<out kotlin.Any>> origin=null
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
|
||||
|
||||
Reference in New Issue
Block a user