diff --git a/fleet/kernel/srcCommonMain/fleet/kernel/rete/Queries.kt b/fleet/kernel/srcCommonMain/fleet/kernel/rete/Queries.kt index 3909a160d53d..59e4192a4fbc 100644 --- a/fleet/kernel/srcCommonMain/fleet/kernel/rete/Queries.kt +++ b/fleet/kernel/srcCommonMain/fleet/kernel/rete/Queries.kt @@ -1,10 +1,8 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package fleet.kernel.rete import com.jetbrains.rhizomedb.* import fleet.kernel.rete.impl.* -import fleet.kernel.rete.impl.DummyQueryScope -import fleet.kernel.rete.impl.distinct import fleet.util.async.firstNotNull import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.first @@ -116,6 +114,19 @@ fun EntityType.each(): SetQuery = let { entityType -> .intern("each", entityType) } +/** + * Provides a match for every [EntityType]. + */ +fun EntityType.Companion.each(): SetQuery> = let { entityType -> + @Suppress("UNCHECKED_CAST") + queryOf(entityType.eid) + .lookupAttribute(Entity.Type.attr as Attribute) + .mapNotNull { // entity type might not yet be registered + entity(it) as EntityType<*>? + } + .intern("eachEntityType", entityType) +} + /** * Query can be seen as predicate. * It yields Unit when it becomes true, and retracts it back when falsified.