[FIR] Fix location for CONFLICTING_PROJECTION diagnostics, extend conflictingProjection.kt with test sample
This commit is contained in:
committed by
teamcityserver
parent
ce78457eaa
commit
b85846c0c0
Vendored
+2
-2
@@ -4,11 +4,11 @@ class Inv<T>
|
||||
class X
|
||||
|
||||
fun f1(p: In<in X>) {}
|
||||
fun f2(p: <!CONFLICTING_PROJECTION!>In<out X><!>) {}
|
||||
fun f2(p: In<<!CONFLICTING_PROJECTION!>out<!> X>) {}
|
||||
fun f3(p: In<X>) {}
|
||||
|
||||
fun f4(p: Out<out X>) {}
|
||||
fun f5(p: <!CONFLICTING_PROJECTION!>Out<in X><!>) {}
|
||||
fun f5(p: Out<<!CONFLICTING_PROJECTION!>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: <!CONFLICTING_PROJECTION!>KFunction2<out K, String, String><!>) {}
|
||||
fun <K> bar2(f: KFunction2<<!CONFLICTING_PROJECTION!>out<!> K, String, String>) {}
|
||||
|
||||
fun <K> bar3(f: Any?) {}
|
||||
|
||||
|
||||
+2
-2
@@ -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: <!CONFLICTING_PROJECTION!>In<out String><!>): Unit = x.<!UNRESOLVED_REFERENCE!>f<!>("1")
|
||||
fun test4(x: In<*>): Unit = x.<!NONE_APPLICABLE!>f<!>("1")
|
||||
fun test3(x: In<<!CONFLICTING_PROJECTION!>out<!> String>): Unit = x.<!UNRESOLVED_REFERENCE!>f<!>("1")
|
||||
fun test4(x: In<*>): Unit = x.<!NONE_APPLICABLE!>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> = <!CONFLICTING_PROJECTION!>In<out T><!>
|
||||
typealias TestInForOut<T> = <!CONFLICTING_PROJECTION!>Out<in T><!>
|
||||
typealias TestOutForIn<T> = In<<!CONFLICTING_PROJECTION!>out<!> T>
|
||||
typealias TestInForOut<T> = Out<<!CONFLICTING_PROJECTION!>in<!> T>
|
||||
|
||||
typealias TestOutForInWithinAlias<T> = InAlias<out T>
|
||||
typealias TestInForOutWithinAlias<T> = OutAlias<in T>
|
||||
|
||||
@@ -6,11 +6,11 @@ class Inv<T>
|
||||
|
||||
typealias In1<T> = In<T>
|
||||
typealias In2<T> = In<in T>
|
||||
typealias In3<T> = <!CONFLICTING_PROJECTION!>In<out T><!>
|
||||
typealias In3<T> = In<<!CONFLICTING_PROJECTION!>out<!> T>
|
||||
typealias In4<T> = In<*>
|
||||
|
||||
typealias Out1<T> = Out<T>
|
||||
typealias Out2<T> = <!CONFLICTING_PROJECTION!>Out<in T><!>
|
||||
typealias Out2<T> = Out<<!CONFLICTING_PROJECTION!>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<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<In<O>>")!>O<!>>>)
|
||||
fun neOk7(i: Pair<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<In<I>, O>")!>I<!>>, <!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<In<I>, O>")!>O<!>>)
|
||||
fun neOk8(i: Inv<out <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<out O>")!>O<!>>)
|
||||
fun neOk9(i: <!CONFLICTING_PROJECTION!>In<out P><!>)
|
||||
fun neOk9(i: In<<!CONFLICTING_PROJECTION!>out<!> P>)
|
||||
fun neOk10(i: Out<<!TYPE_VARIANCE_CONFLICT("O; out; in; Out<O>")!>O<!>>)
|
||||
|
||||
fun neOk11(i: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<in I>")!>I<!>>)
|
||||
|
||||
@@ -23,7 +23,7 @@ interface Test<in I, out O, P> {
|
||||
var neOk7: Pair<In<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Pair<In<I>, O>")!>I<!>>, <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Pair<In<I>, O>")!>O<!>>
|
||||
var neOk8: Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<in O>")!>O<!>>
|
||||
var neOk9: Inv<in <!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<in I>")!>I<!>>
|
||||
var neOk10: <!CONFLICTING_PROJECTION!>In<out I><!>
|
||||
var neOk10: In<<!CONFLICTING_PROJECTION!>out<!> I>
|
||||
|
||||
var neOk11: <!TYPE_VARIANCE_CONFLICT("I; in; invariant; I")!>I<!>
|
||||
var neOk12: In<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; In<O>")!>O<!>>
|
||||
|
||||
+11
-11
@@ -21,20 +21,20 @@ interface Test<in I, out O, P> {
|
||||
fun ok12(): Inv<in P>
|
||||
fun ok13(): Inv<out P>
|
||||
|
||||
fun neOk1(): <!TYPE_VARIANCE_CONFLICT!>I<!>
|
||||
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT!>O<!>>
|
||||
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT!>I<!>>>
|
||||
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT!>I<!>>
|
||||
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT!>O<!>>
|
||||
fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT!>O<!>>, <!TYPE_VARIANCE_CONFLICT!>I<!>>
|
||||
fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT!>O<!>>
|
||||
fun neOk8(): <!CONFLICTING_PROJECTION!>Out<in I><!>
|
||||
fun neOk1(): <!TYPE_VARIANCE_CONFLICT("I; in; out; I")!>I<!>
|
||||
fun neOk2(): In<<!TYPE_VARIANCE_CONFLICT("O; out; in; In<O>")!>O<!>>
|
||||
fun neOk3(): In<In<<!TYPE_VARIANCE_CONFLICT("I; in; out; In<In<I>>")!>I<!>>>
|
||||
fun neOk4(): Inv<<!TYPE_VARIANCE_CONFLICT("I; in; invariant; Inv<I>")!>I<!>>
|
||||
fun neOk5(): Inv<<!TYPE_VARIANCE_CONFLICT("O; out; invariant; Inv<O>")!>O<!>>
|
||||
fun neOk6(): Pair<In<<!TYPE_VARIANCE_CONFLICT("O; out; in; Pair<In<O>, I>")!>O<!>>, <!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<In<O>, I>")!>I<!>>
|
||||
fun neOk7(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>>
|
||||
fun neOk8(): Out<<!CONFLICTING_PROJECTION("Out<in I>")!>in<!> I>
|
||||
|
||||
fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT!>O<!>>
|
||||
fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT!>I<!>>
|
||||
fun neOk10(): Inv<in <!TYPE_VARIANCE_CONFLICT("O; out; in; Inv<in O>")!>O<!>>
|
||||
fun neOk11(): Inv<out <!TYPE_VARIANCE_CONFLICT("I; in; out; Inv<out I>")!>I<!>>
|
||||
|
||||
fun neOk30(): <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Pair<I, ><!>
|
||||
fun neOk31(): Pair<<!TYPE_VARIANCE_CONFLICT!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>
|
||||
fun neOk31(): Pair<<!TYPE_VARIANCE_CONFLICT("I; in; out; Pair<I, ERROR CLASS: Wrong number of type arguments>")!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>
|
||||
fun neOk32(): <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>
|
||||
fun neOk33(): Inv<<!SYNTAX!><!>>
|
||||
fun neOk34(): Inv<<!UNRESOLVED_REFERENCE!>C<!>>
|
||||
|
||||
Reference in New Issue
Block a user