[FIR] Add diagnostic CONFLICTING_PROJECTION
This commit is contained in:
Vendored
+2
-2
@@ -4,11 +4,11 @@ class Inv<T>
|
||||
class X
|
||||
|
||||
fun f1(p: In<in X>) {}
|
||||
fun f2(p: In<out X>) {}
|
||||
fun f2(p: <!CONFLICTING_PROJECTION!>In<out X><!>) {}
|
||||
fun f3(p: In<X>) {}
|
||||
|
||||
fun f4(p: Out<out X>) {}
|
||||
fun f5(p: Out<in X>) {}
|
||||
fun f5(p: <!CONFLICTING_PROJECTION!>Out<in X><!>) {}
|
||||
fun f6(p: Out<X>) {}
|
||||
|
||||
fun f6(p: Inv<X>) {}
|
||||
|
||||
@@ -51,7 +51,7 @@ val String.x1 get() = ""
|
||||
|
||||
fun <K> bar1(f: KFunction2<K, String, String>) {}
|
||||
|
||||
fun <K> bar2(f: KFunction2<out K, String, String>) {}
|
||||
fun <K> bar2(f: <!CONFLICTING_PROJECTION!>KFunction2<out K, String, String><!>) {}
|
||||
|
||||
fun <K> bar3(f: Any?) {}
|
||||
|
||||
|
||||
+1
-1
@@ -7,5 +7,5 @@ class In<in T>() {
|
||||
|
||||
fun test1(x: In<String>): Unit = x.f("1")
|
||||
fun test2(x: In<in String>): Unit = x.f("1")
|
||||
fun test3(x: In<out String>): Unit = x.f("1")
|
||||
fun test3(x: <!CONFLICTING_PROJECTION!>In<out String><!>): Unit = x.f("1")
|
||||
fun test4(x: In<*>): Unit = x.f("1")
|
||||
+2
-2
@@ -6,8 +6,8 @@ interface Out<out T>
|
||||
typealias InAlias<T> = In<T>
|
||||
typealias OutAlias<T> = Out<T>
|
||||
|
||||
typealias TestOutForIn<T> = In<out T>
|
||||
typealias TestInForOut<T> = Out<in T>
|
||||
typealias TestOutForIn<T> = <!CONFLICTING_PROJECTION!>In<out T><!>
|
||||
typealias TestInForOut<T> = <!CONFLICTING_PROJECTION!>Out<in T><!>
|
||||
|
||||
typealias TestOutForInWithinAlias<T> = InAlias<out T>
|
||||
typealias TestInForOutWithinAlias<T> = OutAlias<in T>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// !DIAGNOSTICS: -UNUSED_TYPEALIAS_PARAMETER
|
||||
|
||||
typealias WithVariance<in X, out Y> = Int
|
||||
typealias WithVariance<<!VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED!>in X<!>, <!VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED!>out Y<!>> = Int
|
||||
typealias WithBounds1<T : T> = Int
|
||||
typealias WithBounds2<X : Y, Y : X> = Int
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@ class Inv<T>
|
||||
|
||||
typealias In1<T> = In<T>
|
||||
typealias In2<T> = In<in T>
|
||||
typealias In3<T> = In<out T>
|
||||
typealias In3<T> = <!CONFLICTING_PROJECTION!>In<out T><!>
|
||||
typealias In4<T> = In<*>
|
||||
|
||||
typealias Out1<T> = Out<T>
|
||||
typealias Out2<T> = Out<in T>
|
||||
typealias Out2<T> = <!CONFLICTING_PROJECTION!>Out<in T><!>
|
||||
typealias Out3<T> = Out<out T>
|
||||
typealias Out4<T> = Out<*>
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ interface Test<in I, out O, P> {
|
||||
fun neOk6(i: In<In<O>>)
|
||||
fun neOk7(i: Pair<In<I>, O>)
|
||||
fun neOk8(i: Inv<out O>)
|
||||
fun neOk9(i: In<out P>)
|
||||
fun neOk9(i: <!CONFLICTING_PROJECTION!>In<out P><!>)
|
||||
fun neOk10(i: Out<O>)
|
||||
|
||||
fun neOk11(i: Inv<in I>)
|
||||
|
||||
@@ -23,7 +23,7 @@ interface Test<in I, out O, P> {
|
||||
var neOk7: Pair<In<I>, O>
|
||||
var neOk8: Inv<in O>
|
||||
var neOk9: Inv<in I>
|
||||
var neOk10: In<out I>
|
||||
var neOk10: <!CONFLICTING_PROJECTION!>In<out I><!>
|
||||
|
||||
var neOk11: I
|
||||
var neOk12: In<O>
|
||||
|
||||
@@ -28,7 +28,7 @@ interface Test<in I, out O, P> {
|
||||
fun neOk5(): Inv<O>
|
||||
fun neOk6(): Pair<In<O>, I>
|
||||
fun neOk7(): Inv<in O>
|
||||
fun neOk8(): Out<in I>
|
||||
fun neOk8(): <!CONFLICTING_PROJECTION!>Out<in I><!>
|
||||
|
||||
fun neOk10(): Inv<in O>
|
||||
fun neOk11(): Inv<out I>
|
||||
|
||||
Reference in New Issue
Block a user