Don't generate delegation to java default methods
#KT-15226 Fixed
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
|
||||
// FILE: Base.java
|
||||
|
||||
public interface Base {
|
||||
String getValue();
|
||||
|
||||
default String test() {
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
public interface BaseKotlin : Base {
|
||||
}
|
||||
|
||||
|
||||
class Fail : BaseKotlin {
|
||||
override fun getValue() = "Fail"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val z = object : BaseKotlin by Fail() {
|
||||
override fun getValue() = "OK"
|
||||
}
|
||||
return z.test()
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
|
||||
// FILE: Base.java
|
||||
|
||||
public interface Base {
|
||||
String getValue();
|
||||
|
||||
default String test() {
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
public interface BaseKotlin : Base {
|
||||
override fun getValue() = "OK"
|
||||
|
||||
override fun test(): String {
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
class OK : BaseKotlin {
|
||||
override fun getValue() = "OK"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val ok = object : BaseKotlin by OK() {
|
||||
override fun getValue() = "Fail"
|
||||
}
|
||||
return ok.test()
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// FILE: Base.java
|
||||
|
||||
public interface Base {
|
||||
String getValue();
|
||||
|
||||
default String test() {
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: Base2.java
|
||||
public interface Base2 extends Base {
|
||||
|
||||
default String test() {
|
||||
return "O" + getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface KBase : Base
|
||||
|
||||
interface Derived : KBase, Base2
|
||||
|
||||
class Fail : Derived {
|
||||
override fun getValue() = "Fail"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val z = object : Derived by Fail() {
|
||||
override fun getValue() = "K"
|
||||
}
|
||||
return z.test()
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// FILE: Base.java
|
||||
|
||||
public interface Base {
|
||||
String getValue();
|
||||
|
||||
default String test()
|
||||
{
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: Base2.java
|
||||
public interface Base2 extends Base {
|
||||
|
||||
}
|
||||
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface KBase : Base {
|
||||
override fun test() = "O" + getValue()
|
||||
}
|
||||
|
||||
interface Derived : KBase, Base2
|
||||
|
||||
class K : Derived {
|
||||
override fun getValue() = "K"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val z = object : Derived by K() {
|
||||
override fun getValue() = "Fail"
|
||||
}
|
||||
return z.test()
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
// FILE: Base.java
|
||||
|
||||
public interface Base {
|
||||
String getValue();
|
||||
|
||||
default String test() {
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
class Fail : Base {
|
||||
override fun getValue() = "Fail"
|
||||
}
|
||||
|
||||
class Derived : Base by Fail() {
|
||||
override fun getValue() = "OK"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Derived().test()
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
// FILE: Base.java
|
||||
|
||||
public interface Base extends KBase {
|
||||
String getValue();
|
||||
|
||||
default String test() {
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
interface KBase {
|
||||
fun getValue(): String
|
||||
|
||||
fun test(): String
|
||||
}
|
||||
|
||||
class Fail : Base {
|
||||
override fun getValue() = "Fail"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val z1 = object : KBase by Fail() {
|
||||
override fun getValue() = "OK"
|
||||
}
|
||||
if (z1.test() != "Fail") return "fail 1"
|
||||
|
||||
val z2 = object : Base by Fail() {
|
||||
override fun getValue() = "OK"
|
||||
}
|
||||
return z2.test()
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// FILE: Base.java
|
||||
|
||||
public interface Base {
|
||||
String getValue();
|
||||
|
||||
default String test() {
|
||||
return getValue();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
class Fail : Base {
|
||||
override fun getValue() = "Fail"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val z = object : Base by Fail() {
|
||||
override fun getValue() = "OK"
|
||||
}
|
||||
return z.test()
|
||||
}
|
||||
Reference in New Issue
Block a user