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

@@ -222,6 +222,14 @@ class InvocableHandlerMethodKotlinTests {
assertHandlerResultValue(result, "null")
}
@Test
fun valueClassWithPrivateConstructor() {
this.resolvers.add(stubResolver(1L, Long::class.java))
val method = ValueClassController::valueClassWithPrivateConstructor.javaMethod!!
val result = invoke(ValueClassController(), method, 1L)
assertHandlerResultValue(result, "1")
}
@Test
fun propertyAccessor() {
this.resolvers.add(stubResolver(null, String::class.java))
@@ -368,6 +376,8 @@ class InvocableHandlerMethodKotlinTests {
fun valueClassWithNullable(limit: LongValueClass?) =
"${limit?.value}"
fun valueClassWithPrivateConstructor(limit: ValueClassWithPrivateConstructor) =
"${limit.value}"
}
class PropertyAccessorController {
@@ -416,5 +426,12 @@ class InvocableHandlerMethodKotlinTests {
}
}
@JvmInline
value class ValueClassWithPrivateConstructor private constructor(val value: Long) {
companion object {
fun from(value: Long) = ValueClassWithPrivateConstructor(value)
}
}
class CustomException(message: String) : Throwable(message)
}