Serialize default argument values presence for actual declarations correctly
When default argument value was present in the expected declaration, we did not correctly serialize that fact to the metadata for the actual declaration (`declaresDefaultValue` was used). Therefore, it was impossible to use that actual declaration without passing all parameter values in another module, where it was seen as a deserialized descriptor #KT-21913
This commit is contained in:
+9
@@ -0,0 +1,9 @@
|
||||
package lib
|
||||
|
||||
expect fun foo(x: Int, y: String = "OK")
|
||||
|
||||
expect class C(x: Int, y: String = "OK")
|
||||
|
||||
expect annotation class Anno1(val x: Int, val y: String = "OK")
|
||||
|
||||
expect annotation class Anno2(val x: Int, val y: String = "OK")
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package lib
|
||||
|
||||
actual fun foo(x: Int, y: String) {}
|
||||
|
||||
actual class C actual constructor(x: Int, y: String) {}
|
||||
|
||||
actual annotation class Anno1(actual val x: Int, actual val y: String = "OK")
|
||||
|
||||
actual annotation class Anno2(actual val x: Int, actual val y: String)
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package usage
|
||||
|
||||
import lib.*
|
||||
|
||||
fun testFunction() {
|
||||
foo(42)
|
||||
foo(42, "OK")
|
||||
}
|
||||
|
||||
fun testConstructor() {
|
||||
C(42)
|
||||
C(42, "OK")
|
||||
}
|
||||
|
||||
@Anno1(42)
|
||||
fun testAnno1a() {}
|
||||
|
||||
@Anno1(42, "OK")
|
||||
fun testAnno1b() {}
|
||||
|
||||
@Anno2(42)
|
||||
fun testAnno2a() {}
|
||||
|
||||
@Anno2(42, "OK")
|
||||
fun testAnno2b() {}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
-- Common --
|
||||
Exit code: OK
|
||||
Output:
|
||||
|
||||
-- JVM --
|
||||
Exit code: OK
|
||||
Output:
|
||||
|
||||
-- JVM (2) --
|
||||
Exit code: OK
|
||||
Output:
|
||||
Reference in New Issue
Block a user