open class Foo { open fun bar(t: T, u: U): Z { return null } } class AllTypes() : Foo() { override fun bar(i: Int, d: Double): Int = 42 } class SomeParameters() : Foo() { override fun bar(d: Double, a: Any): Int = 42 } class ReturnType() : Foo() { override fun bar(a: Any, s: String): Byte = 12.toByte() } class ParameterStillGeneric() : Foo() { override fun bar(i: Int, z: Z): String = "" } class ReturnStillGeneric() : Foo() { override fun bar(i: Int, i2: Int): A = null } open class ThroughProxyAllGenerics: Foo() class ThroughProxyAllGenericsImpl: ThroughProxyAllGenerics() { override fun bar(t: Double, i: Int): Boolean = true } open class ThroughProxySomeGenerics: Foo() class ThroughProxySomeGenericsImpl: ThroughProxySomeGenerics() { override fun bar(t: Double, i: Int): Boolean = true } class NoPrimitives: Foo() { override fun bar(t: String, u: Any): String = "" } class NoOverride: Foo() { // Error: Not override override fun bar(t: Any, u: String): String = "" } // REF: "(in AllTypes).bar(Int, Double)" // REF: "(in NoPrimitives).bar(String, Any)" // REF: "(in ParameterStillGeneric).bar(Int, Z)" // REF: "(in ReturnStillGeneric).bar(Int, Int)" // REF: "(in ReturnType).bar(Any, String)" // REF: "(in SomeParameters).bar(Double, Any)" // REF: "(in ThroughProxyAllGenericsImpl).bar(Double, Int)" // REF: "(in ThroughProxySomeGenericsImpl).bar(Double, Int)"