From e78074c1a16f1f1dd4cfd92334d03b92a9506c31 Mon Sep 17 00:00:00 2001 From: Him188 Date: Wed, 6 Apr 2022 15:50:37 +0100 Subject: [PATCH] TypeSafeMap: allow using supertypes in `get` with default value --- .../src/commonMain/kotlin/TypeSafeMap.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mirai-core-utils/src/commonMain/kotlin/TypeSafeMap.kt b/mirai-core-utils/src/commonMain/kotlin/TypeSafeMap.kt index c897ca65e..e14ce975b 100644 --- a/mirai-core-utils/src/commonMain/kotlin/TypeSafeMap.kt +++ b/mirai-core-utils/src/commonMain/kotlin/TypeSafeMap.kt @@ -1,10 +1,10 @@ /* - * Copyright 2019-2021 Mamoe Technologies and contributors. + * Copyright 2019-2022 Mamoe Technologies and contributors. * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. * - * https://github.com/mamoe/mirai/blob/master/LICENSE + * https://github.com/mamoe/mirai/blob/dev/LICENSE */ @file:Suppress("NOTHING_TO_INLINE") @@ -31,7 +31,7 @@ public sealed interface TypeSafeMap { public val size: Int public operator fun get(key: TypeKey): T - public operator fun get(key: TypeKey, defaultValue: T): T + public operator fun get(key: TypeKey, defaultValue: S): S public operator fun contains(key: TypeKey): Boolean = get(key) != null public fun toMapBoxed(): Map, Any?> @@ -81,7 +81,7 @@ internal open class TypeSafeMapImpl( override operator fun get(key: TypeKey): T = map[key.name]?.uncheckedCast() ?: throw NoSuchElementException(key.toString()) - override operator fun get(key: TypeKey, defaultValue: T): T = + override operator fun get(key: TypeKey, defaultValue: S): S = map[key.name]?.uncheckedCast() ?: defaultValue override operator fun contains(key: TypeKey): Boolean = map.containsKey(key.name)