FIR: Fix incorrect handling bare types when subject is type alias
^KT-39043 Fixed
This commit is contained in:
+14
@@ -0,0 +1,14 @@
|
||||
sealed class A<out T> {
|
||||
class B<out T1>(val x: T1) : A<T1>()
|
||||
class C<out T2>(val y: T2) : A<T2>()
|
||||
}
|
||||
|
||||
typealias TA = A<CharSequence>
|
||||
|
||||
fun bar(): TA = TODO()
|
||||
|
||||
fun foo() {
|
||||
when (val a = bar()) {
|
||||
is A.B -> a.x.length
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
FILE: bareWithSubjectTypeAlias.kt
|
||||
public sealed class A<out T> : R|kotlin/Any| {
|
||||
private constructor<out T>(): R|A<T>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final class B<out T1> : R|A<T1>| {
|
||||
public constructor<out T1>(x: R|T1|): R|A.B<T1>| {
|
||||
super<R|A<T1>|>()
|
||||
}
|
||||
|
||||
public final val x: R|T1| = R|<local>/x|
|
||||
public get(): R|T1|
|
||||
|
||||
}
|
||||
|
||||
public final class C<out T2> : R|A<T2>| {
|
||||
public constructor<out T2>(y: R|T2|): R|A.C<T2>| {
|
||||
super<R|A<T2>|>()
|
||||
}
|
||||
|
||||
public final val y: R|T2| = R|<local>/y|
|
||||
public get(): R|T2|
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public final typealias TA = R|A<kotlin/CharSequence>|
|
||||
public final fun bar(): R|TA| {
|
||||
^bar R|kotlin/TODO|()
|
||||
}
|
||||
public final fun foo(): R|kotlin/Unit| {
|
||||
when (lval a: R|TA| = R|/bar|()) {
|
||||
($subj$ is R|A.B<kotlin/CharSequence>|) -> {
|
||||
R|<local>/a|.R|FakeOverride</A.B.x: R|kotlin/CharSequence|>|.R|kotlin/CharSequence.length|
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user