Support default arguments for expected declarations
#KT-21913 Fixed
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
// !LANGUAGE: +MultiPlatformProjects
|
||||
// WITH_RUNTIME
|
||||
// FILE: common.kt
|
||||
|
||||
expect class Foo(a: String, b: Int = 0, c: Double? = null)
|
||||
|
||||
// FILE: jvm.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
actual class Foo actual constructor(a: String, b: Int, c: Double?) {
|
||||
val result: String = a + "," + b + "," + c
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
assertEquals("OK,0,null", Foo("OK").result)
|
||||
assertEquals("OK,42,null", Foo("OK", 42).result)
|
||||
assertEquals("OK,42,3.14", Foo("OK", 42, 3.14).result)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
// !LANGUAGE: +MultiPlatformProjects
|
||||
// WITH_RUNTIME
|
||||
// FILE: common.kt
|
||||
|
||||
expect fun topLevel(a: String, b: Int = 0, c: Double? = null): String
|
||||
|
||||
expect class Foo() {
|
||||
fun member(a: String, b: Int = 0, c: Double? = null): String
|
||||
}
|
||||
|
||||
// FILE: jvm.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
actual fun topLevel(a: String, b: Int, c: Double?): String = a + "," + b + "," + c
|
||||
|
||||
actual class Foo actual constructor() {
|
||||
actual fun member(a: String, b: Int, c: Double?): String = a + "," + b + "," + c
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
assertEquals("OK,0,null", topLevel("OK"))
|
||||
assertEquals("OK,42,null", topLevel("OK", 42))
|
||||
assertEquals("OK,42,3.14", topLevel("OK", 42, 3.14))
|
||||
|
||||
val foo = Foo()
|
||||
assertEquals("OK,0,null", foo.member("OK"))
|
||||
assertEquals("OK,42,null", foo.member("OK", 42))
|
||||
assertEquals("OK,42,3.14", foo.member("OK", 42, 3.14))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// !LANGUAGE: +MultiPlatformProjects
|
||||
// WITH_RUNTIME
|
||||
// FILE: common.kt
|
||||
|
||||
open class A() {
|
||||
fun member(a: String, b: Int = 0, c: Double? = null): String = a + "," + b + "," + c
|
||||
}
|
||||
|
||||
expect class B() : A
|
||||
|
||||
// FILE: jvm.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
actual class B actual constructor() : A()
|
||||
|
||||
fun box(): String {
|
||||
val b = B()
|
||||
assertEquals("OK,0,null", b.member("OK"))
|
||||
assertEquals("OK,42,null", b.member("OK", 42))
|
||||
assertEquals("OK,42,3.14", b.member("OK", 42, 3.14))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
// !LANGUAGE: +MultiPlatformProjects
|
||||
// WITH_RUNTIME
|
||||
// FILE: common.kt
|
||||
|
||||
expect open class A() {
|
||||
fun member(a: String, b: Int = 0, c: Double? = null): String
|
||||
}
|
||||
|
||||
expect class B() : A
|
||||
|
||||
// FILE: jvm.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
actual open class A actual constructor() {
|
||||
actual fun member(a: String, b: Int, c: Double?): String = a + "," + b + "," + c
|
||||
}
|
||||
|
||||
actual class B actual constructor() : A()
|
||||
|
||||
fun box(): String {
|
||||
val b = B()
|
||||
assertEquals("OK,0,null", b.member("OK"))
|
||||
assertEquals("OK,42,null", b.member("OK", 42))
|
||||
assertEquals("OK,42,3.14", b.member("OK", 42, 3.14))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+32
@@ -0,0 +1,32 @@
|
||||
// !LANGUAGE: +MultiPlatformProjects
|
||||
// WITH_RUNTIME
|
||||
// FILE: common.kt
|
||||
|
||||
expect inline fun topLevel(a: String, b: Int = 0, c: () -> Double? = { null }): String
|
||||
|
||||
expect class Foo() {
|
||||
inline fun member(a: String, b: Int = 0, c: () -> Double? = { null }): String
|
||||
}
|
||||
|
||||
// FILE: jvm.kt
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
actual inline fun topLevel(a: String, b: Int, c: () -> Double?): String = a + "," + b + "," + c()
|
||||
|
||||
actual class Foo actual constructor() {
|
||||
actual inline fun member(a: String, b: Int, c: () -> Double?): String = a + "," + b + "," + c()
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
assertEquals("OK,0,null", topLevel("OK"))
|
||||
assertEquals("OK,42,null", topLevel("OK", 42))
|
||||
assertEquals("OK,42,3.14", topLevel("OK", 42, { 3.14 }))
|
||||
|
||||
val foo = Foo()
|
||||
assertEquals("OK,0,null", foo.member("OK"))
|
||||
assertEquals("OK,42,null", foo.member("OK", 42))
|
||||
assertEquals("OK,42,3.14", foo.member("OK", 42, { 3.14 }))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user