55f9f74d5c
In most affected tests, the backend diagnostic such as "conflicting JVM signature" or "accidental override" is directly caused by some already existing error reported by frontend, so it doesn't make sense to check backend diagnostics there. Tests where that was not the case were moved/copied to `testsWithJvmBackend`.
61 lines
2.1 KiB
Kotlin
Vendored
61 lines
2.1 KiB
Kotlin
Vendored
package override.generics
|
|
|
|
interface MyTrait<T> {
|
|
fun foo(t: T) : T
|
|
}
|
|
|
|
abstract class MyAbstractClass<T> {
|
|
abstract fun bar(t: T) : T
|
|
abstract val pr : T
|
|
}
|
|
|
|
interface MyProps<T> {
|
|
val p : T
|
|
}
|
|
|
|
open class MyGenericClass<T>(t : T) : MyTrait<T>, MyAbstractClass<T>(), MyProps<T> {
|
|
override fun foo(t: T) = t
|
|
override fun bar(t: T) = t
|
|
override val p : T = t
|
|
override val pr : T = t
|
|
}
|
|
|
|
class MyChildClass() : MyGenericClass<Int>(1) {}
|
|
class MyChildClass1<T>(t : T) : MyGenericClass<T>(t) {}
|
|
class MyChildClass2<T>(t : T) : MyGenericClass<T>(t) {
|
|
fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(t: T) = t
|
|
val <!VIRTUAL_MEMBER_HIDDEN!>pr<!> : T = t
|
|
override fun bar(t: T) = t
|
|
override val p : T = t
|
|
}
|
|
|
|
open class MyClass() : MyTrait<Int>, MyAbstractClass<String>() {
|
|
override fun foo(t: Int) = t
|
|
override fun bar(t: String) = t
|
|
override val pr : String = "1"
|
|
}
|
|
|
|
abstract class MyAbstractClass1 : MyTrait<Int>, MyAbstractClass<String>() {
|
|
override fun foo(t: Int) = t
|
|
override fun bar(t: String) = t
|
|
}
|
|
|
|
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class MyIllegalGenericClass1<!><T> : MyTrait<T>, MyAbstractClass<T>() {}
|
|
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class MyIllegalGenericClass2<!><T, R>(r : R) : MyTrait<T>, MyAbstractClass<R>() {
|
|
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(r: R) = r
|
|
<!CONFLICTING_OVERLOADS!><!NOTHING_TO_OVERRIDE!>override<!> val <<!TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>T<!>> pr : R<!> = r
|
|
}
|
|
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class MyIllegalClass1<!> : MyTrait<Int>, MyAbstractClass<String>() {}
|
|
abstract class MyLegalAbstractClass1 : MyTrait<Int>, MyAbstractClass<String>() {}
|
|
|
|
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class MyIllegalClass2<!><T>(t : T) : MyTrait<Int>, MyAbstractClass<Int>() {
|
|
fun foo(t: T) = t
|
|
fun bar(t: T) = t
|
|
<!CONFLICTING_OVERLOADS!>val <<!TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>R<!>> pr : T<!> = t
|
|
}
|
|
abstract class MyLegalAbstractClass2<T>(t : T) : MyTrait<Int>, MyAbstractClass<Int>() {
|
|
fun foo(t: T) = t
|
|
fun bar(t: T) = t
|
|
<!CONFLICTING_OVERLOADS!>val <<!TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>R<!>> pr : T<!> = t
|
|
}
|