Fix for KT-14243: Wrong invocation descriptor on calling implicitly generated implementation in class

#KT-14243 Fixed
This commit is contained in:
Michael Bogdanov
2016-10-09 12:27:04 +03:00
parent ce0d81f670
commit 5bd045c79c
11 changed files with 242 additions and 1 deletions
+18
View File
@@ -0,0 +1,18 @@
interface Z<T> {
fun test(p: T): T {
return p
}
}
open class ZImpl : Z<String>
class ZImpl2 : ZImpl() {
override fun test(p: String): String {
return super.test(p)
}
}
fun box(): String {
return ZImpl2().test("OK")
}
+20
View File
@@ -0,0 +1,20 @@
interface Z<T> {
fun test(p: T): T {
return p
}
}
open class ZImpl : Z<String>
open class ZImpl2 : Z<String>, ZImpl()
class ZImpl3 : ZImpl2() {
override fun test(p: String): String {
return super.test(p)
}
}
fun box(): String {
return ZImpl3().test("OK")
}
+20
View File
@@ -0,0 +1,20 @@
open class Z<T, Y> {
open fun test(p: T, z: Y): T {
return p
}
}
open class ZImpl<X> : Z<String, X>()
open class ZImpl2 : ZImpl<String>()
class ZImpl3 : ZImpl2() {
override fun test(p: String, z: String): String {
return super.test(p, z)
}
}
fun box(): String {
return ZImpl3().test("OK", "fail")
}
+21
View File
@@ -0,0 +1,21 @@
interface Z<T> {
val value: T
val z: T
get() = value
}
open class ZImpl : Z<String> {
override val value: String
get() = "OK"
}
open class ZImpl2 : ZImpl() {
override val z: String
get() = super.z
}
fun box(): String {
return ZImpl2().value
}