[FIR] Implement INCONSISTENT_TYPE_PARAMETER_VALUES, INCONSISTENT_TYPE_PARAMETER_BOUNDS

This commit is contained in:
Ivan Kochurkin
2021-06-25 22:35:51 +03:00
committed by teamcityserver
parent ec20f52707
commit 92d7a61b4f
21 changed files with 313 additions and 121 deletions
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
interface A<in T> {}
interface B<T> : A<Int> {}
@@ -16,28 +17,36 @@ interface BB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>BA1<Any>, BB1<!> {}
// FILE: b.kt
package x
interface AA1<out T> {}
interface AB1 : AA1<Int> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
interface AA1<out T> {}
interface AB1 : AA1<Int> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
// FILE: c.kt
package x2
interface AA1<out T> {}
interface AB1 : AA1<Any> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
interface AA1<out T> {}
interface AB1 : AA1<Any> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
// FILE: d.kt
package x3
interface AA1<in T> {}
interface AB1 : AA1<Any> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
interface AA1<in T> {}
interface AB1 : AA1<Any> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
// FILE: e.kt
package sx2
interface AA1<in T> {}
interface AB1 : AA1<Int> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
interface AA1<in T> {}
interface AB1 : AA1<Int> {}
interface AB3 : AA1<Comparable<Int>> {}
interface AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {}
// FILE: f.kt
interface I0<T1, T2>
abstract class C2<T3, T4> : I0<T3, T4>
typealias TA<T5, T6> = C2<T6, T5>
interface I2
interface I3
class C3 : TA<I2, I3>(), I0<I3, I2>