Support Kotlin value classes as suspending function arguments

Similar to gh-31698 but for Coroutines.

See gh-31846
This commit is contained in:
T45K
2023-12-14 21:52:57 +09:00
committed by Sébastien Deleuze
parent 503ccb577c
commit bf0819390f
2 changed files with 30 additions and 1 deletions

View File

@@ -145,6 +145,15 @@ class CoroutinesUtilsTests {
}
}
@Test
fun invokeSuspendingFunctionWithValueClassParameter() {
val method = CoroutinesUtilsTests::class.java.declaredMethods.first { it.name.startsWith("suspendingFunctionWithValueClass") }
val mono = CoroutinesUtils.invokeSuspendingFunction(method, this, "foo", null) as Mono
runBlocking {
Assertions.assertThat(mono.awaitSingle()).isEqualTo("foo")
}
}
suspend fun suspendingFunction(value: String): String {
delay(1)
return value
@@ -172,4 +181,12 @@ class CoroutinesUtilsTests {
return null
}
suspend fun suspendingFunctionWithValueClass(value: ValueClass): String {
delay(1)
return value.value
}
@JvmInline
value class ValueClass(val value: String)
}