FIR: Refactor checkUpperBoundViolated
There just should be a different facades for cases A<T1, T2> and foo<T1, T2>() Test data has changed for type alias constructors since previously, it was working by mistake because of assumption that type alias arguments are linearly mapped to the type parameters of the corresponding constructors ^KT-50703 Open
This commit is contained in:
+4
-4
@@ -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<!>>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
|
||||
val x3 = N2<<!UPPER_BOUND_VIOLATED!>String<!>>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
|
||||
val x2 = <!UPPER_BOUND_VIOLATED!>N<String>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)<!>
|
||||
val x3 = <!UPPER_BOUND_VIOLATED!>N2<String>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)<!>
|
||||
|
||||
class TColl<T, C : Collection<T>>
|
||||
|
||||
@@ -13,5 +13,5 @@ typealias TC<T, C> = TColl<T, C>
|
||||
typealias TC2<T, C> = TC<T, C>
|
||||
|
||||
val y1 = TColl<Any, <!UPPER_BOUND_VIOLATED!>Any<!>>()
|
||||
val y2 = TC<Any, <!UPPER_BOUND_VIOLATED!>Any<!>>()
|
||||
val y3 = TC2<Any, <!UPPER_BOUND_VIOLATED!>Any<!>>()
|
||||
val y2 = <!UPPER_BOUND_VIOLATED!>TC<Any, Any>()<!>
|
||||
val y3 = <!UPPER_BOUND_VIOLATED!>TC2<Any, Any>()<!>
|
||||
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
|
||||
class TColl<T, C : Collection<T>>
|
||||
|
||||
typealias TC<T1, T2> = TColl<T1, T2>
|
||||
typealias TC2<T1, T2> = TC<T1, T2>
|
||||
|
||||
fun test1(x: TC2<Number, Collection<Number>>) {}
|
||||
fun test2(x: TC2<Number, Collection<Int>>) {}
|
||||
fun test3(x: TC2<Number, List<Int>>) {}
|
||||
fun test4(x: <!UPPER_BOUND_VIOLATED_IN_TYPEALIAS_EXPANSION!>TC2<Number, List<Any>><!>) {}
|
||||
|
||||
val test5 = TC2<Number, Collection<Number>>()
|
||||
val test6 = TC2<Number, Collection<Int>>()
|
||||
val test7 = TC2<Number, List<Int>>()
|
||||
val test8 = <!UPPER_BOUND_VIOLATED!>TC2<Number, List<Any>>()<!>
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
|
||||
class TColl<T, C : Collection<T>>
|
||||
|
||||
+3
-3
@@ -15,10 +15,10 @@ fun test3(x: NL<Int>) {}
|
||||
fun test4(x: <!UPPER_BOUND_VIOLATED_IN_TYPEALIAS_EXPANSION!>NL<Any><!>) {}
|
||||
|
||||
val test5 = NA<Int>()
|
||||
val test6 = NA<<!UPPER_BOUND_VIOLATED!>Any<!>>()
|
||||
val test6 = <!UPPER_BOUND_VIOLATED!>NA<Any>()<!>
|
||||
val test7 = NL<Int>()
|
||||
val test8 = MMMM<Int>()
|
||||
val test9dwd = NL<<!UPPER_BOUND_VIOLATED!>Any<!>>()
|
||||
val test9dwd = <!UPPER_BOUND_VIOLATED!>NL<Any>()<!>
|
||||
|
||||
fun test9(x: TC<Number, Collection<Number>>) {}
|
||||
fun test10(x: TC<Number, Collection<Int>>) {}
|
||||
@@ -28,4 +28,4 @@ fun test12(x: <!UPPER_BOUND_VIOLATED_IN_TYPEALIAS_EXPANSION!>TC<Number, List<Any
|
||||
val test13 = TC<Number, Collection<Number>>()
|
||||
val test14 = TC<Number, Collection<Int>>()
|
||||
val test15 = TC<Number, List<Int>>()
|
||||
val test16 = TC<Number, <!UPPER_BOUND_VIOLATED!>List<Any><!>>()
|
||||
val test16 = <!UPPER_BOUND_VIOLATED!>TC<Number, List<Any>>()<!>
|
||||
|
||||
Vendored
+2
-2
@@ -30,7 +30,7 @@ typealias N<T> = Num<T>
|
||||
|
||||
val testN0 = N(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
|
||||
val testN1 = N<Int>(1)
|
||||
val testN1a = N<<!UPPER_BOUND_VIOLATED!>String<!>>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
|
||||
val testN1a = <!UPPER_BOUND_VIOLATED!>N<String>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)<!>
|
||||
val testN2 = <!INAPPLICABLE_CANDIDATE!>N<!><Int, Int>(1)
|
||||
|
||||
class MyPair<T1 : CharSequence, T2 : Number>(val string: T1, val number: T2)
|
||||
@@ -38,4 +38,4 @@ typealias MP<T1> = MyPair<String, T1>
|
||||
|
||||
val testMP0 = MP<Int>("", 1)
|
||||
val testMP1 = MP(<!ARGUMENT_TYPE_MISMATCH!>1<!>, <!ARGUMENT_TYPE_MISMATCH!>""<!>)
|
||||
val testMP2 = MP<String>(<!ARGUMENT_TYPE_MISMATCH!>""<!>, <!ARGUMENT_TYPE_MISMATCH!>""<!>)
|
||||
val testMP2 = <!UPPER_BOUND_VIOLATED!>MP<String>(<!ARGUMENT_TYPE_MISMATCH!>""<!>, <!ARGUMENT_TYPE_MISMATCH!>""<!>)<!>
|
||||
|
||||
Reference in New Issue
Block a user