From 24d52bbe9098d104459533308cd20de1d5d2901c Mon Sep 17 00:00:00 2001 From: Him188 Date: Wed, 28 Jul 2021 11:04:32 +0800 Subject: [PATCH] Convert `ComponentKey.componentName` and `.smartToString` to extension --- .../kotlin/network/component/ComponentKey.kt | 33 ++++++++++--------- .../component/ConcurrentComponentStorage.kt | 1 + .../network/component/ComponentKeyTest.kt | 2 ++ 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/network/component/ComponentKey.kt b/mirai-core/src/commonMain/kotlin/network/component/ComponentKey.kt index be0ccd70a..d29edc9d7 100644 --- a/mirai-core/src/commonMain/kotlin/network/component/ComponentKey.kt +++ b/mirai-core/src/commonMain/kotlin/network/component/ComponentKey.kt @@ -18,23 +18,24 @@ import kotlin.reflect.full.allSupertypes * @param T is a type hint. */ internal interface ComponentKey { - /** - * Get name of `T`. - * - * - If [qualified] is `false`, example: `PacketCodec`. - * - If [qualified] is `true`, example: `net.mamoe.mirai.internal.network.components.PacketCodec`. - */ - fun componentName(qualified: Boolean = false): String { - val argument = getComponentTypeArgument() - argument?.render(qualified)?.let { return it } - return argument?.type?.classifier.renderClassifier(qualified) - } - - fun smartToString(qualified: Boolean = false): String { - return "ComponentKey<${componentName(qualified)}>" - } companion object { + /** + * Get name of `T`. + * + * - If [qualified] is `false`, example: `PacketCodec`. + * - If [qualified] is `true`, example: `net.mamoe.mirai.internal.network.components.PacketCodec`. + */ + fun ComponentKey.componentName(qualified: Boolean = false): String { + val argument = getComponentTypeArgument() + argument?.render(qualified)?.let { return it } + return argument?.type?.classifier.renderClassifier(qualified) + } + + fun ComponentKey.smartToString(qualified: Boolean = false): String { + return "ComponentKey<${componentName(qualified)}>" + } + // reflection is slow, but it is initialized once only (if memory sufficient). private fun KTypeProjection.render( @@ -84,4 +85,4 @@ internal interface ComponentKey { private val COMPONENT_KEY_K_CLASS = ComponentKey::class } -} \ No newline at end of file +} diff --git a/mirai-core/src/commonMain/kotlin/network/component/ConcurrentComponentStorage.kt b/mirai-core/src/commonMain/kotlin/network/component/ConcurrentComponentStorage.kt index 161251cbe..f7e4a7255 100644 --- a/mirai-core/src/commonMain/kotlin/network/component/ConcurrentComponentStorage.kt +++ b/mirai-core/src/commonMain/kotlin/network/component/ConcurrentComponentStorage.kt @@ -9,6 +9,7 @@ package net.mamoe.mirai.internal.network.component +import net.mamoe.mirai.internal.network.component.ComponentKey.Companion.componentName import net.mamoe.mirai.utils.systemProp import java.util.concurrent.ConcurrentHashMap import kotlin.LazyThreadSafetyMode.NONE diff --git a/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt b/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt index 525758529..a2bb8dac6 100644 --- a/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt +++ b/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt @@ -9,6 +9,8 @@ package net.mamoe.mirai.internal.network.component +import net.mamoe.mirai.internal.network.component.ComponentKey.Companion.componentName +import net.mamoe.mirai.internal.network.component.ComponentKey.Companion.smartToString import net.mamoe.mirai.internal.test.AbstractTest import org.junit.jupiter.api.Test import kotlin.test.assertEquals