FIR2IR don't generate delegates for default interface members

This commit is contained in:
Dmitry Petrov
2021-11-24 17:33:51 +03:00
committed by TeamCityServer
parent 261482904c
commit 88f41d006a
19 changed files with 97 additions and 47 deletions
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: FailK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: failK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
@@ -1,5 +1,12 @@
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: Shouldn't be executed in 'remove'
// FIR status: NSME: Test.remove(Ljava/lang/String;Ljava/lang/String;)Z
// FIR + JVM_IR:
// INVOKEVIRTUAL Test.remove (Ljava/lang/String;Ljava/lang/String;)Z
// => java.lang.NoSuchMethodError: Test.remove(Ljava/lang/String;Ljava/lang/String;)Z
// FE1.0 + JVM_IR:
// INVOKEVIRTUAL Test.remove (Ljava/lang/Object;Ljava/lang/Object;)Z
// => default method in java.util.Map (as expected)
// SKIP_JDK6
// TARGET_BACKEND: JVM
// FULL_JDK
@@ -25,3 +32,4 @@ fun box(): String {
return test.getOrDefault("absent", "OK")
}
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: failK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: all-compatibility
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: failK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
@@ -0,0 +1,24 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
// FILE: javaDefaultMethod.kt
class JImpl : J {
override fun getO() = "fail"
override fun getK() = "K"
}
class Test : J by JImpl()
fun box() =
Test().getO() + Test().getK()
// FILE: J.java
public interface J {
default String getO() {
return "O";
}
String getK();
}
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: enable
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: failK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: enable
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: failK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: all
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: failK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB
@@ -1,6 +1,4 @@
// !JVM_DEFAULT_MODE: all
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: failK
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_STDLIB