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,