Nathan Castlehow
11/04/2024, 1:37 AMOuterClass::valueClass
but not when using the KProperty returned form
OuterClass::class.declaredMemberProperties
Minimum repro in thread🧵Nathan Castlehow
11/04/2024, 1:37 AMimport kotlinx.serialization.Serializable
import kotlin.reflect.full.declaredMemberProperties
import kotlin.test.Test
class ValueClassReflectionTest {
@JvmInline
@Serializable
value class SomeValueClass(val value: String)
@Serializable
data class OuterClass(
var valueClass: SomeValueClass? = null,
)
@Test
fun `value class `() {
val outerClass = OuterClass()
// works as expected
assert(OuterClass::valueClass.get(outerClass) == null)
val nullableMemberProperties = OuterClass::class.declaredMemberProperties.filter {
it.returnType.isMarkedNullable
}
nullableMemberProperties.forEach { memberProperty ->
// fails
assert(memberProperty.get(outerClass) == null, { "Property ${memberProperty.name} should be null" })
}
}
}
udalov