Fix handling of value class with private constructor

See gh-32536
This commit is contained in:
T45K
2024-03-26 21:49:38 +09:00
committed by Sébastien Deleuze
parent 88b9c0567d
commit b28153e1d7
6 changed files with 65 additions and 3 deletions

View File

@@ -112,6 +112,13 @@ class InvocableHandlerMethodKotlinTests {
Assertions.assertThat(value).isNull()
}
@Test
fun valueClassWithPrivateConstructor() {
composite.addResolver(StubArgumentResolver(Char::class.java, 'a'))
val value = getInvocable(ValueClassHandler::class.java, Char::class.java).invokeForRequest(request, null)
Assertions.assertThat(value).isEqualTo('a')
}
@Test
fun propertyAccessor() {
val value = getInvocable(PropertyAccessorHandler::class.java).invokeForRequest(request, null)
@@ -191,6 +198,8 @@ class InvocableHandlerMethodKotlinTests {
fun valueClassWithNullable(limit: LongValueClass?) =
limit?.value
fun valueClassWithPrivateConstructor(limit: ValueClassWithPrivateConstructor) =
limit.value
}
private class PropertyAccessorHandler {
@@ -238,6 +247,13 @@ class InvocableHandlerMethodKotlinTests {
}
}
@JvmInline
value class ValueClassWithPrivateConstructor private constructor(val value: Char) {
companion object {
fun from(value: Char) = ValueClassWithPrivateConstructor(value)
}
}
class CustomException(message: String) : Throwable(message)
}