From e769130829ca46be6e2a9ea952ff5250295ffcef Mon Sep 17 00:00:00 2001 From: Him188 Date: Tue, 11 May 2021 09:01:12 +0800 Subject: [PATCH] Improve ComponentStorage.plus: accept nullable arguments --- .../kotlin/network/component/ComponentStorage.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/network/component/ComponentStorage.kt b/mirai-core/src/commonMain/kotlin/network/component/ComponentStorage.kt index 4af814a5d..b565decb4 100644 --- a/mirai-core/src/commonMain/kotlin/network/component/ComponentStorage.kt +++ b/mirai-core/src/commonMain/kotlin/network/component/ComponentStorage.kt @@ -31,10 +31,17 @@ internal interface ComponentStorage { val keys: Set> override fun toString(): String + + companion object { + val EMPTY: ComponentStorage by lazy { ConcurrentComponentStorage() } + } } -internal operator fun ComponentStorage.plus(fallback: ComponentStorage): ComponentStorage = - CombinedComponentStorage(this, fallback) +internal operator fun ComponentStorage?.plus(fallback: ComponentStorage?): ComponentStorage { + if (this == null) return fallback ?: return ComponentStorage.EMPTY + if (fallback == null) return this + return CombinedComponentStorage(this, fallback) +} private class CombinedComponentStorage( val main: ComponentStorage,