Added Variance tests

This commit is contained in:
Stanislav Erokhin
2014-09-09 19:27:12 +04:00
parent db457a612c
commit aa97bb8cfc
19 changed files with 957 additions and 1 deletions
@@ -0,0 +1,23 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
trait TypeBounds1<in I, out O, P, X : <!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>I<!>>
trait TypeBounds2<in I, out O, P, X : O>
trait TypeBounds3<in I, out O, P, X : P>
trait TypeBounds4<in I, out O, P, X : In<I>>
trait TypeBounds5<in I, out O, P, X : In<<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>O<!>>>
trait WhereTypeBounds1<in I, out O, P, X> where X : <!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>I<!>
trait WhereTypeBounds2<in I, out O, P, X> where X : O
trait WhereTypeBounds3<in I, out O, P, X> where X : P
trait WhereTypeBounds4<in I, out O, P, X> where X : In<I>
trait WhereTypeBounds5<in I, out O, P, X> where X : In<<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>O<!>>
class SubClass1<in I, out O, P> : Out<<!TYPE_VARIANCE_CONFLICT(I; in; out; Out<I>)!>I<!>>
class SubClass2<in I, out O, P> : Out<O>
class SubClass3<in I, out O, P> : Out<P>
class SubClass4<in I, out O, P> : In<I>
class SubClass5<in I, out O, P> : In<<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>O<!>>
class SubClass6<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; Inv<O>)!>O<!>>
class SubClass7<in I, out O, P> : Inv<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; Inv<I>)!>I<!>>
@@ -0,0 +1,128 @@
package
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class SubClass1</*0*/ in I, /*1*/ out O, /*2*/ P> : Out<I> {
public constructor SubClass1</*0*/ in I, /*1*/ out O, /*2*/ P>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class SubClass2</*0*/ in I, /*1*/ out O, /*2*/ P> : Out<O> {
public constructor SubClass2</*0*/ in I, /*1*/ out O, /*2*/ P>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class SubClass3</*0*/ in I, /*1*/ out O, /*2*/ P> : Out<P> {
public constructor SubClass3</*0*/ in I, /*1*/ out O, /*2*/ P>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class SubClass4</*0*/ in I, /*1*/ out O, /*2*/ P> : In<I> {
public constructor SubClass4</*0*/ in I, /*1*/ out O, /*2*/ P>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class SubClass5</*0*/ in I, /*1*/ out O, /*2*/ P> : In<O> {
public constructor SubClass5</*0*/ in I, /*1*/ out O, /*2*/ P>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class SubClass6</*0*/ in I, /*1*/ out O, /*2*/ P> : Inv<O> {
public constructor SubClass6</*0*/ in I, /*1*/ out O, /*2*/ P>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class SubClass7</*0*/ in I, /*1*/ out O, /*2*/ P> : Inv<I> {
public constructor SubClass7</*0*/ in I, /*1*/ out O, /*2*/ P>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait TypeBounds1</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : I> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait TypeBounds2</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : O> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait TypeBounds3</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : P> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait TypeBounds4</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : In<I>> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait TypeBounds5</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : In<O>> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait WhereTypeBounds1</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : I> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait WhereTypeBounds2</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : O> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait WhereTypeBounds3</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : P> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait WhereTypeBounds4</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : In<I>> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait WhereTypeBounds5</*0*/ in I, /*1*/ out O, /*2*/ P, /*3*/ X : In<O>> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,34 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
fun <T> getT(): T = null!!
trait Test<in I, out O, P> {
fun parameters1(i: I, o: <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>, p: P)
fun parameters2(i: In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>)
fun parameters3(i: In<O>)
fun explicitReturnType1() : <!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>I<!>
fun explicitReturnType2() : O
fun explicitReturnType3() : P
fun explicitReturnType4() : In<I>
fun explicitReturnType5() : In<<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>O<!>>
<!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>fun imlicitReturnType1()<!> = getT<I>()
fun imlicitReturnType2() = getT<O>()
fun imlicitReturnType3() = getT<P>()
fun imlicitReturnType4() = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>fun imlicitReturnType5()<!> = getT<In<O>>()
fun I.receiver1()
fun <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>.receiver2()
fun P.receiver3()
fun In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>.receiver4()
fun In<O>.receiver5()
fun <X : I> typeParameter1()
fun <X : <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>> typeParameter2()
fun <X : P> typeParameter3()
fun <X : In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>> typeParameter4()
fun <X : In<O>> typeParameter5()
}
@@ -0,0 +1,50 @@
package
internal fun </*0*/ T> getT(): T
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal abstract fun explicitReturnType1(): I
internal abstract fun explicitReturnType2(): O
internal abstract fun explicitReturnType3(): P
internal abstract fun explicitReturnType4(): In<I>
internal abstract fun explicitReturnType5(): In<O>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal open fun imlicitReturnType1(): I
internal open fun imlicitReturnType2(): O
internal open fun imlicitReturnType3(): P
internal open fun imlicitReturnType4(): In<I>
internal open fun imlicitReturnType5(): In<O>
internal abstract fun parameters1(/*0*/ i: I, /*1*/ o: O, /*2*/ p: P): kotlin.Unit
internal abstract fun parameters2(/*0*/ i: In<I>): kotlin.Unit
internal abstract fun parameters3(/*0*/ i: In<O>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
internal abstract fun </*0*/ X : I> typeParameter1(): kotlin.Unit
internal abstract fun </*0*/ X : O> typeParameter2(): kotlin.Unit
internal abstract fun </*0*/ X : P> typeParameter3(): kotlin.Unit
internal abstract fun </*0*/ X : In<I>> typeParameter4(): kotlin.Unit
internal abstract fun </*0*/ X : In<O>> typeParameter5(): kotlin.Unit
internal abstract fun I.receiver1(): kotlin.Unit
internal abstract fun O.receiver2(): kotlin.Unit
internal abstract fun P.receiver3(): kotlin.Unit
internal abstract fun In<I>.receiver4(): kotlin.Unit
internal abstract fun In<O>.receiver5(): kotlin.Unit
}
@@ -0,0 +1,48 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
trait Pair<out X, out Y>
trait Test<in I, out O, P> {
fun ok1(i: I)
fun ok2(i: In<O>)
fun ok3(i: In<In<I>>)
fun ok4(i: Inv<P>)
fun ok5(i: P)
fun ok6(i: Out<I>)
fun ok7(i: Out<Out<I>>)
fun ok8(i: Out<In<O>>)
fun ok9(i: Out<In<P>>)
fun Ok10(i: I)
fun Ok11(i: In<O>)
fun Ok12(i: In<In<I>>)
fun Ok13(i: Out<I>)
fun Ok14(i: Pair<In<O>, I>)
fun Ok15(i: Inv<out I>)
fun Ok20(i: Inv<in O>)
fun Ok21(i: Inv<in P>)
fun Ok22(i: Inv<out I>)
fun Ok23(i: Inv<out P>)
fun neOk1(i: <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>)
fun neOk2(i: In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>)
fun neOk3(i: In<In<<!TYPE_VARIANCE_CONFLICT(O; out; in; In<In<O>>)!>O<!>>>)
fun neOk4(i: Inv<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; Inv<I>)!>I<!>>)
fun neOk5(i: Inv<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; Inv<O>)!>O<!>>)
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: 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<!>>)
fun neOk12(i: Inv<out <!TYPE_VARIANCE_CONFLICT(O; out; in; Inv<out O>)!>O<!>>)
fun neOk30(i: Pair<<!TYPE_VARIANCE_CONFLICT(O; out; in; Pair<O, [ERROR : No type element]>)!>O<!>, <!SYNTAX!><!>>)
fun neOk31(i: Pair<<!TYPE_VARIANCE_CONFLICT(O; out; in; Pair<O, [ERROR : Inv]>)!>O<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>)
fun neOk32(i: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>)
fun neOk33(i: Inv<<!SYNTAX!><!>>)
fun neOk34(i: Inv<<!UNRESOLVED_REFERENCE!>C<!>>)
fun neOk35(i: Inv<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><P, P><!>)
}
@@ -0,0 +1,68 @@
package
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Pair</*0*/ out X, /*1*/ out Y> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
internal abstract fun Ok10(/*0*/ i: I): kotlin.Unit
internal abstract fun Ok11(/*0*/ i: In<O>): kotlin.Unit
internal abstract fun Ok12(/*0*/ i: In<In<I>>): kotlin.Unit
internal abstract fun Ok13(/*0*/ i: Out<I>): kotlin.Unit
internal abstract fun Ok14(/*0*/ i: Pair<In<O>, I>): kotlin.Unit
internal abstract fun Ok15(/*0*/ i: Inv<out I>): kotlin.Unit
internal abstract fun Ok20(/*0*/ i: Inv<in O>): kotlin.Unit
internal abstract fun Ok21(/*0*/ i: Inv<in P>): kotlin.Unit
internal abstract fun Ok22(/*0*/ i: Inv<out I>): kotlin.Unit
internal abstract fun Ok23(/*0*/ i: Inv<out P>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal abstract fun neOk1(/*0*/ i: O): kotlin.Unit
internal abstract fun neOk10(/*0*/ i: Out<O>): kotlin.Unit
internal abstract fun neOk11(/*0*/ i: Inv<in I>): kotlin.Unit
internal abstract fun neOk12(/*0*/ i: Inv<out O>): kotlin.Unit
internal abstract fun neOk2(/*0*/ i: In<I>): kotlin.Unit
internal abstract fun neOk3(/*0*/ i: In<In<O>>): kotlin.Unit
internal abstract fun neOk30(/*0*/ i: Pair<O, [ERROR : No type element]>): kotlin.Unit
internal abstract fun neOk31(/*0*/ i: Pair<O, [ERROR : Inv]>): kotlin.Unit
internal abstract fun neOk32(/*0*/ i: [ERROR : Inv]): kotlin.Unit
internal abstract fun neOk33(/*0*/ i: Inv<[ERROR : No type element]>): kotlin.Unit
internal abstract fun neOk34(/*0*/ i: Inv<[ERROR : C]>): kotlin.Unit
internal abstract fun neOk35(/*0*/ i: [ERROR : Inv<P, P>]): kotlin.Unit
internal abstract fun neOk4(/*0*/ i: Inv<I>): kotlin.Unit
internal abstract fun neOk5(/*0*/ i: Inv<O>): kotlin.Unit
internal abstract fun neOk6(/*0*/ i: In<In<O>>): kotlin.Unit
internal abstract fun neOk7(/*0*/ i: Pair<In<I>, O>): kotlin.Unit
internal abstract fun neOk8(/*0*/ i: Inv<out O>): kotlin.Unit
internal abstract fun neOk9(/*0*/ i: In<out P>): kotlin.Unit
internal abstract fun ok1(/*0*/ i: I): kotlin.Unit
internal abstract fun ok2(/*0*/ i: In<O>): kotlin.Unit
internal abstract fun ok3(/*0*/ i: In<In<I>>): kotlin.Unit
internal abstract fun ok4(/*0*/ i: Inv<P>): kotlin.Unit
internal abstract fun ok5(/*0*/ i: P): kotlin.Unit
internal abstract fun ok6(/*0*/ i: Out<I>): kotlin.Unit
internal abstract fun ok7(/*0*/ i: Out<Out<I>>): kotlin.Unit
internal abstract fun ok8(/*0*/ i: Out<In<O>>): kotlin.Unit
internal abstract fun ok9(/*0*/ i: Out<In<P>>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,45 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
trait Pair<out X, out Y>
trait Test<in I, out O, P> {
var ok1: Inv<P>
var ok2: P
var ok3: Out<In<P>>
var ok4: Pair<In<P>, Out<P>>
var ok5: Inv<out P>
var ok6: Inv<in P>
var ok7: Inv<out P>
var neOk1: <!TYPE_VARIANCE_CONFLICT(O; out; invariant; O)!>O<!>
var neOk2: In<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; In<I>)!>I<!>>
var neOk3: In<In<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; In<In<O>>)!>O<!>>>
var neOk4: Inv<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; Inv<I>)!>I<!>>
var neOk5: Inv<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; Inv<O>)!>O<!>>
var neOk6: In<In<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; In<In<O>>)!>O<!>>>
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: 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<!>>
var neOk13: In<In<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; In<In<I>>)!>I<!>>>
var neOk14: Out<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; Out<I>)!>I<!>>
var neOk15: Out<Out<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; Out<Out<I>>)!>I<!>>>
var neOk16: Out<In<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; Out<In<O>>)!>O<!>>>
var neOk17: Pair<In<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; Pair<In<O>, I>)!>O<!>>, <!TYPE_VARIANCE_CONFLICT(I; in; invariant; Pair<In<O>, I>)!>I<!>>
var neOk20: Inv<in <!TYPE_VARIANCE_CONFLICT(O; out; invariant; Inv<in O>)!>O<!>>
var neOk21: Inv<in <!TYPE_VARIANCE_CONFLICT(I; in; invariant; Inv<in I>)!>I<!>>
var neOk22: Inv<out <!TYPE_VARIANCE_CONFLICT(O; out; invariant; Inv<out O>)!>O<!>>
var neOk23: Inv<out <!TYPE_VARIANCE_CONFLICT(I; in; invariant; Inv<out I>)!>I<!>>
var neOk30: Pair<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; Pair<I, [ERROR : No type element]>)!>I<!>, <!SYNTAX!><!>>
var neOk31: Pair<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; Pair<I, [ERROR : Inv]>)!>I<!>, <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>>
var neOk32: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Inv<!>
var neOk33: Inv<<!SYNTAX!><!>>
var neOk34: Inv<<!UNRESOLVED_REFERENCE!>C<!>>
var neOk35: Inv<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><P, P><!>
}
@@ -0,0 +1,65 @@
package
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Pair</*0*/ out X, /*1*/ out Y> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
internal abstract var neOk1: O
internal abstract var neOk10: In<out I>
internal abstract var neOk11: I
internal abstract var neOk12: In<O>
internal abstract var neOk13: In<In<I>>
internal abstract var neOk14: Out<I>
internal abstract var neOk15: Out<Out<I>>
internal abstract var neOk16: Out<In<O>>
internal abstract var neOk17: Pair<In<O>, I>
internal abstract var neOk2: In<I>
internal abstract var neOk20: Inv<in O>
internal abstract var neOk21: Inv<in I>
internal abstract var neOk22: Inv<out O>
internal abstract var neOk23: Inv<out I>
internal abstract var neOk3: In<In<O>>
internal abstract var neOk30: Pair<I, [ERROR : No type element]>
internal abstract var neOk31: Pair<I, [ERROR : Inv]>
internal abstract var neOk32: [ERROR : Inv]
internal abstract var neOk33: Inv<[ERROR : No type element]>
internal abstract var neOk34: Inv<[ERROR : C]>
internal abstract var neOk35: [ERROR : Inv<P, P>]
internal abstract var neOk4: Inv<I>
internal abstract var neOk5: Inv<O>
internal abstract var neOk6: In<In<O>>
internal abstract var neOk7: Pair<In<I>, O>
internal abstract var neOk8: Inv<in O>
internal abstract var neOk9: Inv<in I>
internal abstract var ok1: Inv<P>
internal abstract var ok2: P
internal abstract var ok3: Out<In<P>>
internal abstract var ok4: Pair<In<P>, Out<P>>
internal abstract var ok5: Inv<out P>
internal abstract var ok6: Inv<in P>
internal abstract var ok7: Inv<out P>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,40 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
trait Pair<out X, out Y>
trait Test<in I, out O, P> {
fun ok1(): O
fun ok2(): In<I>
fun ok3(): In<In<O>>
fun ok4(): Inv<P>
fun ok5(): P
fun ok6(): Out<O>
fun ok7(): Out<P>
fun ok8(): Out<In<P>>
fun ok9(): Pair<In<I>, O>
fun ok10(): Inv<in I>
fun ok11(): Inv<out O>
fun ok12(): Inv<in P>
fun ok13(): Inv<out P>
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>
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(): Pair<<!TYPE_VARIANCE_CONFLICT(I; in; out; Pair<I, [ERROR : No type element]>)!>I<!>, <!SYNTAX!><!>>
fun neOk31(): Pair<<!TYPE_VARIANCE_CONFLICT(I; in; out; Pair<I, [ERROR : Inv]>)!>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<!>>
fun neOk35(): Inv<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><P, P><!>
}
@@ -0,0 +1,60 @@
package
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Pair</*0*/ out X, /*1*/ out Y> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal abstract fun neOk1(): I
internal abstract fun neOk10(): Inv<in O>
internal abstract fun neOk11(): Inv<out I>
internal abstract fun neOk2(): In<O>
internal abstract fun neOk3(): In<In<I>>
internal abstract fun neOk30(): Pair<I, [ERROR : No type element]>
internal abstract fun neOk31(): Pair<I, [ERROR : Inv]>
internal abstract fun neOk32(): [ERROR : Inv]
internal abstract fun neOk33(): Inv<[ERROR : No type element]>
internal abstract fun neOk34(): Inv<[ERROR : C]>
internal abstract fun neOk35(): [ERROR : Inv<P, P>]
internal abstract fun neOk4(): Inv<I>
internal abstract fun neOk5(): Inv<O>
internal abstract fun neOk6(): Pair<In<O>, I>
internal abstract fun neOk7(): Inv<in O>
internal abstract fun neOk8(): Out<in I>
internal abstract fun ok1(): O
internal abstract fun ok10(): Inv<in I>
internal abstract fun ok11(): Inv<out O>
internal abstract fun ok12(): Inv<in P>
internal abstract fun ok13(): Inv<out P>
internal abstract fun ok2(): In<I>
internal abstract fun ok3(): In<In<O>>
internal abstract fun ok4(): Inv<P>
internal abstract fun ok5(): P
internal abstract fun ok6(): Out<O>
internal abstract fun ok7(): Out<P>
internal abstract fun ok8(): Out<In<P>>
internal abstract fun ok9(): Pair<In<I>, O>
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,25 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
fun <T> getT(): T = null!!
class Test<in I, out O, P>(
val type1: <!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>I<!>,
val type2: O,
val type3: P,
val type4: In<I>,
val type5: In<<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>O<!>>,
var type6: <!TYPE_VARIANCE_CONFLICT(I; in; invariant; I)!>I<!>,
var type7: <!TYPE_VARIANCE_CONFLICT(O; out; invariant; O)!>O<!>,
var type8: P,
var type9: In<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; In<I>)!>I<!>>,
var type0: In<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; In<O>)!>O<!>>,
type11: I,
type12: O,
type13: P,
type14: In<I>,
type15: In<O>
)
@@ -0,0 +1,38 @@
package
internal fun </*0*/ T> getT(): T
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
public constructor Test</*0*/ in I, /*1*/ out O, /*2*/ P>(/*0*/ type1: I, /*1*/ type2: O, /*2*/ type3: P, /*3*/ type4: In<I>, /*4*/ type5: In<O>, /*5*/ type6: I, /*6*/ type7: O, /*7*/ type8: P, /*8*/ type9: In<I>, /*9*/ type0: In<O>, /*10*/ type11: I, /*11*/ type12: O, /*12*/ type13: P, /*13*/ type14: In<I>, /*14*/ type15: In<O>)
internal final var type0: In<O>
internal final val type1: I
internal final val type2: O
internal final val type3: P
internal final val type4: In<I>
internal final val type5: In<O>
internal final var type6: I
internal final var type7: O
internal final var type8: P
internal final var type9: In<I>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,48 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
class Delegate<T> {
fun get(<!UNUSED_PARAMETER(t)!>t<!>: Any, <!UNUSED_PARAMETER(p)!>p<!>: PropertyMetadata): T = null!!
fun set(<!UNUSED_PARAMETER(t)!>t<!>: Any, <!UNUSED_PARAMETER(p)!>p<!>: PropertyMetadata, <!UNUSED_PARAMETER(value)!>value<!>: T) {}
}
fun <T> getT(): T = null!!
abstract class Test<in I, out O, P> {
abstract val type1: <!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>I<!>
abstract val type2: O
abstract val type3: P
abstract val type4: In<I>
abstract val type5: In<<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>O<!>>
<!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>val implicitType1<!> = getT<I>()
val implicitType2 = getT<O>()
val implicitType3 = getT<P>()
val implicitType4 = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>val implicitType5<!> = getT<In<O>>()
<!TYPE_VARIANCE_CONFLICT(I; in; out; I)!>val delegateType1<!> by Delegate<I>()
val delegateType2 by Delegate<O>()
val delegateType3 by Delegate<P>()
val delegateType4 by Delegate<In<I>>()
<!TYPE_VARIANCE_CONFLICT(O; out; in; In<O>)!>val delegateType5<!> by Delegate<In<O>>()
abstract val I.receiver1: Int
abstract val <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>.receiver2: Int
abstract val P.receiver3: Int
abstract val In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>.receiver4: Int
abstract val In<O>.receiver5: Int
val <X : I> typeParameter1 = 8
val <X : <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>> typeParameter2 = 13
val <X : P> typeParameter3 = 21
val <X : In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>> typeParameter4 = 34
val <X : In<O>> typeParameter5 = 55
val <X> typeParameter6 where X : I = 1
val <X> typeParameter7 where X : <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!> = 1
val <X> typeParameter8 where X : P = 2
val <X> typeParameter9 where X : In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>> = 3
val <X> typeParameter0 where X : In<O> = 5
}
@@ -0,0 +1,67 @@
package
internal fun </*0*/ T> getT(): T
internal final class Delegate</*0*/ T> {
public constructor Delegate</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun get(/*0*/ t: kotlin.Any, /*1*/ p: kotlin.PropertyMetadata): T
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun set(/*0*/ t: kotlin.Any, /*1*/ p: kotlin.PropertyMetadata, /*2*/ value: T): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal abstract class Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
public constructor Test</*0*/ in I, /*1*/ out O, /*2*/ P>()
internal final val delegateType1: I
internal final val delegateType2: O
internal final val delegateType3: P
internal final val delegateType4: In<I>
internal final val delegateType5: In<O>
internal final val implicitType1: I
internal final val implicitType2: O
internal final val implicitType3: P
internal final val implicitType4: In<I>
internal final val implicitType5: In<O>
internal abstract val type1: I
internal abstract val type2: O
internal abstract val type3: P
internal abstract val type4: In<I>
internal abstract val type5: In<O>
internal final val </*0*/ X : In<O>> typeParameter0: kotlin.Int = 5
internal final val </*0*/ X : I> typeParameter1: kotlin.Int = 8
internal final val </*0*/ X : O> typeParameter2: kotlin.Int = 13
internal final val </*0*/ X : P> typeParameter3: kotlin.Int = 21
internal final val </*0*/ X : In<I>> typeParameter4: kotlin.Int = 34
internal final val </*0*/ X : In<O>> typeParameter5: kotlin.Int = 55
internal final val </*0*/ X : I> typeParameter6: kotlin.Int = 1
internal final val </*0*/ X : O> typeParameter7: kotlin.Int = 1
internal final val </*0*/ X : P> typeParameter8: kotlin.Int = 2
internal final val </*0*/ X : In<I>> typeParameter9: kotlin.Int = 3
internal abstract val I.receiver1: kotlin.Int
internal abstract val O.receiver2: kotlin.Int
internal abstract val P.receiver3: kotlin.Int
internal abstract val In<I>.receiver4: kotlin.Int
internal abstract val In<O>.receiver5: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,48 @@
trait In<in T>
trait Out<out T>
trait Inv<T>
class Delegate<T> {
fun get(<!UNUSED_PARAMETER(t)!>t<!>: Any, <!UNUSED_PARAMETER(p)!>p<!>: PropertyMetadata): T = null!!
fun set(<!UNUSED_PARAMETER(t)!>t<!>: Any, <!UNUSED_PARAMETER(p)!>p<!>: PropertyMetadata, <!UNUSED_PARAMETER(varue)!>varue<!>: T) {}
}
fun <T> getT(): T = null!!
abstract class Test<in I, out O, P> {
abstract var type1: <!TYPE_VARIANCE_CONFLICT(I; in; invariant; I)!>I<!>
abstract var type2: <!TYPE_VARIANCE_CONFLICT(O; out; invariant; O)!>O<!>
abstract var type3: P
abstract var type4: In<<!TYPE_VARIANCE_CONFLICT(I; in; invariant; In<I>)!>I<!>>
abstract var type5: In<<!TYPE_VARIANCE_CONFLICT(O; out; invariant; In<O>)!>O<!>>
<!TYPE_VARIANCE_CONFLICT(I; in; invariant; I)!>var implicitType1<!> = getT<I>()
<!TYPE_VARIANCE_CONFLICT(O; out; invariant; O)!>var implicitType2<!> = getT<O>()
var implicitType3 = getT<P>()
<!TYPE_VARIANCE_CONFLICT(I; in; invariant; In<I>)!>var implicitType4<!> = getT<In<I>>()
<!TYPE_VARIANCE_CONFLICT(O; out; invariant; In<O>)!>var implicitType5<!> = getT<In<O>>()
<!TYPE_VARIANCE_CONFLICT(I; in; invariant; I)!>var delegateType1<!> by Delegate<I>()
<!TYPE_VARIANCE_CONFLICT(O; out; invariant; O)!>var delegateType2<!> by Delegate<O>()
var delegateType3 by Delegate<P>()
<!TYPE_VARIANCE_CONFLICT(I; in; invariant; In<I>)!>var delegateType4<!> by Delegate<In<I>>()
<!TYPE_VARIANCE_CONFLICT(O; out; invariant; In<O>)!>var delegateType5<!> by Delegate<In<O>>()
abstract var I.receiver1: Int
abstract var <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>.receiver2: Int
abstract var P.receiver3: Int
abstract var In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>.receiver4: Int
abstract var In<O>.receiver5: Int
var <X : I> typeParameter1 = 8
var <X : <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!>> typeParameter2 = 13
var <X : P> typeParameter3 = 21
var <X : In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>>> typeParameter4 = 34
var <X : In<O>> typeParameter5 = 55
var <X> typeParameter6 where X : I = 1
var <X> typeParameter7 where X : <!TYPE_VARIANCE_CONFLICT(O; out; in; O)!>O<!> = 1
var <X> typeParameter8 where X : P = 2
var <X> typeParameter9 where X : In<<!TYPE_VARIANCE_CONFLICT(I; in; out; In<I>)!>I<!>> = 3
var <X> typeParameter0 where X : In<O> = 5
}
@@ -0,0 +1,67 @@
package
internal fun </*0*/ T> getT(): T
internal final class Delegate</*0*/ T> {
public constructor Delegate</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun get(/*0*/ t: kotlin.Any, /*1*/ p: kotlin.PropertyMetadata): T
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun set(/*0*/ t: kotlin.Any, /*1*/ p: kotlin.PropertyMetadata, /*2*/ varue: T): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait In</*0*/ in T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Inv</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait Out</*0*/ out T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal abstract class Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
public constructor Test</*0*/ in I, /*1*/ out O, /*2*/ P>()
internal final var delegateType1: I
internal final var delegateType2: O
internal final var delegateType3: P
internal final var delegateType4: In<I>
internal final var delegateType5: In<O>
internal final var implicitType1: I
internal final var implicitType2: O
internal final var implicitType3: P
internal final var implicitType4: In<I>
internal final var implicitType5: In<O>
internal abstract var type1: I
internal abstract var type2: O
internal abstract var type3: P
internal abstract var type4: In<I>
internal abstract var type5: In<O>
internal final var </*0*/ X : In<O>> typeParameter0: kotlin.Int
internal final var </*0*/ X : I> typeParameter1: kotlin.Int
internal final var </*0*/ X : O> typeParameter2: kotlin.Int
internal final var </*0*/ X : P> typeParameter3: kotlin.Int
internal final var </*0*/ X : In<I>> typeParameter4: kotlin.Int
internal final var </*0*/ X : In<O>> typeParameter5: kotlin.Int
internal final var </*0*/ X : I> typeParameter6: kotlin.Int
internal final var </*0*/ X : O> typeParameter7: kotlin.Int
internal final var </*0*/ X : P> typeParameter8: kotlin.Int
internal final var </*0*/ X : In<I>> typeParameter9: kotlin.Int
internal abstract var I.receiver1: kotlin.Int
internal abstract var O.receiver2: kotlin.Int
internal abstract var P.receiver3: kotlin.Int
internal abstract var In<I>.receiver4: kotlin.Int
internal abstract var In<O>.receiver5: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,20 @@
trait Test<in I, out O> {
val internal_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
public val public_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
protected val protected_val: <!TYPE_VARIANCE_CONFLICT!>I<!>
private val private_val: I
var interlan_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!>
private set
public var public_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!>
private set
protected var protected_private_set: <!TYPE_VARIANCE_CONFLICT!>O<!>
private set
private var private_private_set: O
private set
fun internal_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
public fun public_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
protected fun protected_fun(i: <!TYPE_VARIANCE_CONFLICT!>O<!>) : <!TYPE_VARIANCE_CONFLICT!>I<!>
private fun private_fun(i: O) : I
}
@@ -0,0 +1,19 @@
package
internal trait Test</*0*/ in I, /*1*/ out O> {
internal abstract var interlan_private_set: O
internal abstract val internal_val: I
private abstract var private_private_set: O
private abstract val private_val: I
protected abstract var protected_private_set: O
protected abstract val protected_val: I
public abstract var public_private_set: O
public abstract val public_val: I
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal abstract fun internal_fun(/*0*/ i: O): I
private abstract fun private_fun(/*0*/ i: O): I
protected abstract fun protected_fun(/*0*/ i: O): I
public abstract fun public_fun(/*0*/ i: O): I
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -33,7 +33,7 @@ import java.util.regex.Pattern;
public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
@TestMetadata("compiler/testData/diagnostics/tests")
@TestDataPath("$PROJECT_ROOT")
@InnerTestClasses({Tests.Annotations.class, Tests.BackingField.class, Tests.Cast.class, Tests.CheckArguments.class, Tests.ClassObjects.class, Tests.ControlFlowAnalysis.class, Tests.ControlStructures.class, Tests.CyclicHierarchy.class, Tests.DataClasses.class, Tests.DataFlow.class, Tests.DataFlowInfoTraversal.class, Tests.DeclarationChecks.class, Tests.DelegatedProperty.class, Tests.Delegation.class, Tests.Deparenthesize.class, Tests.DuplicateJvmSignature.class, Tests.DynamicTypes.class, Tests.Enum.class, Tests.Evaluate.class, Tests.Extensions.class, Tests.FunctionLiterals.class, Tests.Generics.class, Tests.Imports.class, Tests.IncompleteCode.class, Tests.Inference.class, Tests.Infos.class, Tests.Inline.class, Tests.Inner.class, Tests.J_k.class, Tests.Jdk_annotations.class, Tests.Labels.class, Tests.Library.class, Tests.Multimodule.class, Tests.NamedArguments.class, Tests.NullabilityAndSmartCasts.class, Tests.NullableTypes.class, Tests.Numbers.class, Tests.Objects.class, Tests.OperatorsOverloading.class, Tests.Overload.class, Tests.Override.class, Tests.PlatformTypes.class, Tests.Recovery.class, Tests.Redeclarations.class, Tests.Regressions.class, Tests.Resolve.class, Tests.Scopes.class, Tests.SenselessComparison.class, Tests.Shadowing.class, Tests.SmartCasts.class, Tests.Substitutions.class, Tests.Subtyping.class, Tests.Suppress.class, Tests.ThisAndSuper.class, Tests.TraitWithRequired.class, Tests.Typedefs.class, Tests.Unit.class, Tests.Varargs.class, Tests.When.class})
@InnerTestClasses({Tests.Annotations.class, Tests.BackingField.class, Tests.Cast.class, Tests.CheckArguments.class, Tests.ClassObjects.class, Tests.ControlFlowAnalysis.class, Tests.ControlStructures.class, Tests.CyclicHierarchy.class, Tests.DataClasses.class, Tests.DataFlow.class, Tests.DataFlowInfoTraversal.class, Tests.DeclarationChecks.class, Tests.DelegatedProperty.class, Tests.Delegation.class, Tests.Deparenthesize.class, Tests.DuplicateJvmSignature.class, Tests.DynamicTypes.class, Tests.Enum.class, Tests.Evaluate.class, Tests.Extensions.class, Tests.FunctionLiterals.class, Tests.Generics.class, Tests.Imports.class, Tests.IncompleteCode.class, Tests.Inference.class, Tests.Infos.class, Tests.Inline.class, Tests.Inner.class, Tests.J_k.class, Tests.Jdk_annotations.class, Tests.Labels.class, Tests.Library.class, Tests.Multimodule.class, Tests.NamedArguments.class, Tests.NullabilityAndSmartCasts.class, Tests.NullableTypes.class, Tests.Numbers.class, Tests.Objects.class, Tests.OperatorsOverloading.class, Tests.Overload.class, Tests.Override.class, Tests.PlatformTypes.class, Tests.Recovery.class, Tests.Redeclarations.class, Tests.Regressions.class, Tests.Resolve.class, Tests.Scopes.class, Tests.SenselessComparison.class, Tests.Shadowing.class, Tests.SmartCasts.class, Tests.Substitutions.class, Tests.Subtyping.class, Tests.Suppress.class, Tests.ThisAndSuper.class, Tests.TraitWithRequired.class, Tests.Typedefs.class, Tests.Unit.class, Tests.Varargs.class, Tests.Variance.class, Tests.When.class})
@RunWith(JUnit3RunnerWithInners.class)
public static class Tests extends AbstractJetDiagnosticsTest {
@TestMetadata("Abstract.kt")
@@ -10212,6 +10212,69 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
}
}
@TestMetadata("compiler/testData/diagnostics/tests/variance")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Variance extends AbstractJetDiagnosticsTest {
public void testAllFilesPresentInVariance() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/variance"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("Class.kt")
public void testClass() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/Class.kt");
doTest(fileName);
}
@TestMetadata("Function.kt")
public void testFunction() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/Function.kt");
doTest(fileName);
}
@TestMetadata("InPosition.kt")
public void testInPosition() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/InPosition.kt");
doTest(fileName);
}
@TestMetadata("InvariantPosition.kt")
public void testInvariantPosition() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/InvariantPosition.kt");
doTest(fileName);
}
@TestMetadata("OutPosition.kt")
public void testOutPosition() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/OutPosition.kt");
doTest(fileName);
}
@TestMetadata("PrimaryConstructor.kt")
public void testPrimaryConstructor() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/PrimaryConstructor.kt");
doTest(fileName);
}
@TestMetadata("ValProperty.kt")
public void testValProperty() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/ValProperty.kt");
doTest(fileName);
}
@TestMetadata("VarProperty.kt")
public void testVarProperty() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/VarProperty.kt");
doTest(fileName);
}
@TestMetadata("Visibility.kt")
public void testVisibility() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/variance/Visibility.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/diagnostics/tests/when")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)