blob: 2a05d64fe96cc555cbb36bea4492f03b906a17ad [file] [log] [blame]
interface MyTrait<T> {
fun foo(t: T) : T
}
abstract class MyAbstractClass<T> {
abstract fun bar(t: T) : T
}
open class MyGenericClass<T> : MyTrait<T>, MyAbstractClass<T>() {
override fun foo(t: T) = t
override fun bar(t: T) = t
}
class MyChildClass : MyGenericClass<Int>() {}
class MyChildClass1<T> : MyGenericClass<T>() {}
class MyChildClass2<T> : MyGenericClass<T>() {
fun <error>foo</error>(t: T) = t
override fun bar(t: T) = t
}
open class MyClass : MyTrait<Int>, MyAbstractClass<String>() {
override fun foo(t: Int) = t
override fun bar(t: String) = t
}
<error>class MyIllegalGenericClass1</error><T> : MyTrait<T>, MyAbstractClass<T>() {}
<error>class MyIllegalGenericClass2</error><T, R> : MyTrait<T>, MyAbstractClass<R>() {
<error>override</error> fun foo(r: R) = r
}
<error>class MyIllegalClass1</error> : MyTrait<Int>, MyAbstractClass<String>() {}
<error>class MyIllegalClass2</error><T> : MyTrait<Int>, MyAbstractClass<Int>() {
<error>fun foo(t: T)</error> = t
<error>fun bar(t: T)</error> = t
}