Initial support of @JvmDefault

This commit is contained in:
Mikhael Bogdanov
2018-02-20 18:02:54 +01:00
parent e885195ee1
commit fe45eb2a81
50 changed files with 322 additions and 256 deletions
@@ -1,13 +1,15 @@
// !API_VERSION: 1.3
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: 1.kt
interface Test {
@kotlin.annotations.JvmDefault
fun test(): String {
return "OK"
}
}
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
class TestClass : Test {
override fun test(): String {
return super.test()
@@ -1,23 +1,23 @@
// !API_VERSION: 1.3
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: 1.kt
interface Test {
@kotlin.annotations.JvmDefault
fun test(): String {
return "OK"
}
}
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override fun test(): String {
return super.test()
}
}
class TestClass : Test2 {
}
fun box(): String {
return TestClass().test()
return object : Test2 {}.test()
}
@@ -0,0 +1,19 @@
// !API_VERSION: 1.3
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: 1.kt
interface Test {
@kotlin.annotations.JvmDefault
val prop: String
get() = "OK"
}
// FILE: 2.kt
class TestClass : Test {
override val prop: String
get() = super.prop
}
fun box(): String {
return TestClass().prop
}
@@ -0,0 +1,20 @@
// !API_VERSION: 1.3
// JVM_TARGET: 1.8
// WITH_RUNTIME
// FILE: 1.kt
interface Test {
@kotlin.annotations.JvmDefault
val prop: String
get() = "OK"
}
// FILE: 2.kt
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override val prop: String
get() = super.prop
}
fun box(): String {
return object : Test2 {}.prop
}
@@ -1,3 +1,4 @@
// !API_VERSION: 1.3
// FILE: 1.kt
interface Test {
fun test(): String {
@@ -7,8 +8,9 @@ interface Test {
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
// WITH_RUNTIME
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override fun test(): String {
return super.test()
}
@@ -20,6 +22,7 @@ interface Test3 : Test {
interface Test4 : Test2, Test3 {
@kotlin.annotations.JvmDefault
override fun test(): String {
return super.test()
}
@@ -1,3 +1,4 @@
// !API_VERSION: 1.3
// FILE: 1.kt
interface Test {
fun test(): String {
@@ -7,7 +8,7 @@ interface Test {
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
// WITH_RUNTIME
open class TestClass : Test {
override fun test(): String {
return super.test()
@@ -15,6 +16,7 @@ open class TestClass : Test {
}
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override fun test(): String
}
@@ -1,3 +1,4 @@
// !API_VERSION: 1.3
// FILE: 1.kt
interface Test {
fun test(): String {
@@ -7,12 +8,13 @@ interface Test {
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
// WITH_RUNTIME
abstract class TestClass : Test {
abstract override fun test(): String
}
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override fun test(): String {
return "OK"
}
@@ -8,7 +8,6 @@ interface Test {
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
class TestClass : Test {
override fun test(): String {
return super.test()
@@ -1,3 +1,4 @@
// !API_VERSION: 1.3
// FILE: 1.kt
interface Test {
fun test(): String {
@@ -7,8 +8,9 @@ interface Test {
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
// WITH_RUNTIME
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override fun test(): String {
return super.test()
}
@@ -1,3 +1,4 @@
// !API_VERSION: 1.3
// FILE: 1.kt
interface Test {
@@ -8,8 +9,9 @@ interface Test {
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
// WITH_RUNTIME
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override fun test(): String {
return super.test()
}
@@ -7,7 +7,6 @@ interface Test {
// FILE: 2.kt
// JVM_TARGET: 1.8
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
class TestClass : Test {
override val test: String
get() = super.test
@@ -0,0 +1,26 @@
// !API_VERSION: 1.3
// FILE: 1.kt
interface Test {
val test: String
get() = "OK"
}
// FILE: 2.kt
// JVM_TARGET: 1.8
// WITH_RUNTIME
interface Test2 : Test {
@kotlin.annotations.JvmDefault
override val test: String
get() = super.test
}
class TestClass : Test2 {
}
fun box(): String {
return TestClass().test
}