blob: 2dea3eb86af808fe4ebe9ed022b905f696ad8b91 [file]
class Out<out T>
class In<in Z>
interface A<T, E> {
fun foo1(x: Out<T>): Out<T>
fun foo2(x: In<E>): In<E>
var prop: Out<T>
}
// method: A::foo1
// generic signature: (LOut<+TT;>;)LOut<TT;>;
// method: A::foo2
// generic signature: (LIn<-TE;>;)LIn<TE;>;
// method: A::getProp
// generic signature: ()LOut<TT;>;
// method: A::setProp
// generic signature: (LOut<+TT;>;)V
abstract class B : A<String, Any?> {
override final fun foo1(x: Out<String>): Out<String> = null!!
override final fun foo2(x: In<Any?>): In<Any?> = null!!
override final var prop: Out<String> = null!!
}
// method: B::foo1
// generic signature: (LOut<Ljava/lang/String;>;)LOut<Ljava/lang/String;>;
// method: B::foo2
// generic signature: (LIn<Ljava/lang/Object;>;)LIn<Ljava/lang/Object;>;
// method: B::getProp
// generic signature: ()LOut<Ljava/lang/String;>;
// method: B::setProp
// generic signature: (LOut<Ljava/lang/String;>;)V