Generate accessors for super calls if necessary

Current implementation of calls with super qualifier relies on
invokespecial, which has some more constraints than regular virtual
invocations. When those constraints aren't met, accessors are needed.
This commit is contained in:
Ting-Yuan Huang
2019-04-09 10:49:57 -07:00
committed by max-kammerer
parent c90e6c1f18
commit 1c3b895fc0
26 changed files with 73 additions and 51 deletions
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface A {
fun foo(): String
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface A {
fun foo(): String
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface A {
fun foo(): String
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface A {
fun foo(): String
}
@@ -1,5 +1,4 @@
// !JVM_DEFAULT_MODE: enable
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
@@ -1,5 +1,4 @@
// WITH_RUNTIME
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
interface Z {
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface A {
// There must be no delegation methods for 'log' and 'bar' in C as they are private
private val log: String get() = "O"
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface BK {
fun x() : Int = 50
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
open class M() {
open var y = 500
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
//inspired by kt3492
interface BK {
fun foo(): String
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface Base {
val foo: String
fun bar(): String
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
//inspired by kt3492
interface Base {
val foo: String
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface T {
open fun baz(): String = "T.baz"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface T {
open val baz: String
get() = "T.baz"
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
open class A {
open fun foo2(): String = "OK"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
open class A {
open val foo: String = "OK"
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface ATrait {
open fun foo2(): String = "OK"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface A {
open val foo: String
get() = "OK"
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: JVM_IR
interface A {
private fun foo() = "OK"
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
var result = "fail"
interface B {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
open class B {
val p = "OK"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface Z {
fun testFun() : String {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface Z {
fun testFun(): String {