From 4cf83614d2204a4446171d0b677748e9896bbc62 Mon Sep 17 00:00:00 2001 From: sksamuel Date: Fri, 29 Jan 2021 14:00:02 -0600 Subject: [PATCH] Allow registration of custom Show typeclasses #2021 --- .../commonMain/kotlin/io/kotest/assertions/show/Show.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kotest-assertions/kotest-assertions-shared/src/commonMain/kotlin/io/kotest/assertions/show/Show.kt b/kotest-assertions/kotest-assertions-shared/src/commonMain/kotlin/io/kotest/assertions/show/Show.kt index 8bb962efc40..b044eabd46a 100644 --- a/kotest-assertions/kotest-assertions-shared/src/commonMain/kotlin/io/kotest/assertions/show/Show.kt +++ b/kotest-assertions/kotest-assertions-shared/src/commonMain/kotlin/io/kotest/assertions/show/Show.kt @@ -74,8 +74,11 @@ expect fun platformShow(a: A): Show? @Suppress("UNCHECKED_CAST") fun commonShowFor(t: T): Show { // lookup a show from the registered typeclasses - val kclass = Shows.all().keys.firstOrNull { it.isInstance(t) } - if (kclass != null) Shows.all()[kclass] as Show + val kclass: KClass<*>? = Shows.all().keys.firstOrNull { it.isInstance(t) } + if (kclass != null) { + val show: Show<*>? = Shows.all()[kclass] + return show as Show + } // this won't work in JS or native, so they'll get the boring old toString version if (io.kotest.mpp.reflection.isDataClass(t::class)) return dataClassShow() return DefaultShow