Don't generate delegation to java default methods

#KT-15226  Fixed
This commit is contained in:
Mikhael Bogdanov
2016-12-13 15:07:06 +01:00
parent 653d589f98
commit 268d55104c
18 changed files with 367 additions and 14 deletions
@@ -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()
}