[FIR] Pass bounds from original type to fully expanded ^KT-40203 Fixed

This commit is contained in:
Ivan Kochurkin
2021-09-28 00:22:28 +03:00
committed by teamcityserver
parent f0f60907e2
commit 3dc0935da4
5 changed files with 36 additions and 16 deletions
@@ -4,8 +4,8 @@ typealias N<T> = Num<T>
typealias N2<T> = N<T>
val x1 = Num<<!UPPER_BOUND_VIOLATED!>String<!>>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
val x2 = N<<!UPPER_BOUND_VIOLATED!>String<!>>("")
val x3 = N2<<!UPPER_BOUND_VIOLATED!>String<!>>("")
val x2 = N<<!UPPER_BOUND_VIOLATED!>String<!>>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
val x3 = N2<<!UPPER_BOUND_VIOLATED!>String<!>>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
class TColl<T, C : Collection<T>>
@@ -4,7 +4,7 @@ class Num<Tn : Number>(val x: Tn)
typealias N<T> = Num<T>
val test0 = N(1)
val test1 = N("1")
val test1 = N(<!ARGUMENT_TYPE_MISMATCH!>"1"<!>)
class Cons<T>(val head: T, val tail: Cons<T>?)
@@ -14,6 +14,6 @@ typealias C<T> = Cons<T>
typealias C2<T> = MapLike<T>
val test1 = C(1, C(2, null))
val test2 = C(1, C("", null))
val test23 = C2(if (true) 1 else null)
val test234 = C2(C2(if (true) 1 else null))
val test2 = C(1, C(<!ARGUMENT_TYPE_MISMATCH!>""<!>, null))
val test23 = C2(<!ARGUMENT_TYPE_MISMATCH!>if (true) 1 else null<!>)
val test234 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>C2<!>(C2(<!ARGUMENT_TYPE_MISMATCH!>if (true) 1 else null<!>))
@@ -28,14 +28,14 @@ val test3pr = <!INAPPLICABLE_CANDIDATE!>P2<!><String, Int, Int>(1, "")
class Num<T : Number>(val x: T)
typealias N<T> = Num<T>
val testN0 = N("")
val testN0 = N(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
val testN1 = N<Int>(1)
val testN1a = N<<!UPPER_BOUND_VIOLATED!>String<!>>("")
val testN1a = N<<!UPPER_BOUND_VIOLATED!>String<!>>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
val testN2 = <!INAPPLICABLE_CANDIDATE!>N<!><Int, Int>(1)
class MyPair<T1 : CharSequence, T2 : Number>(val string: T1, val number: T2)
typealias MP<T1> = MyPair<String, T1>
val testMP0 = MP<Int>("", 1)
val testMP1 = MP(<!ARGUMENT_TYPE_MISMATCH!>1<!>, "")
val testMP2 = MP<String>("", "")
val testMP1 = MP(<!ARGUMENT_TYPE_MISMATCH!>1<!>, <!ARGUMENT_TYPE_MISMATCH!>""<!>)
val testMP2 = MP<String>(<!ARGUMENT_TYPE_MISMATCH!>""<!>, <!ARGUMENT_TYPE_MISMATCH!>""<!>)