From 48cc4dc7d551e61304848504a97217fe1536a5b8 Mon Sep 17 00:00:00 2001 From: Ukendio Date: Sun, 14 Jul 2024 08:30:20 +0200 Subject: [PATCH] Properly type EmptyQuery --- src/init.luau | 50 +++++++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/init.luau b/src/init.luau index 9492108..d9d22d1 100644 --- a/src/init.luau +++ b/src/init.luau @@ -662,31 +662,43 @@ local function world_get(world: World, entityId: i53, a: i53, b: i53?, c: i53?, end end -local function noop() - return nil -end - -local EmptyQuery = { - __iter = function() - return noop - end, - next = noop, - replace = noop, - without = function(self) - return self - end +type Item = () -> (number, ...any) +export type Query = typeof({ + __iter = function(): Item + return function() + return 1 + end + end, +}) & { + next: Item, + replace: (Query, ...any) -> (), + without: (Query) -> Query } -setmetatable(EmptyQuery, EmptyQuery) - -export type Query = typeof(EmptyQuery) - type CompatibleArchetype = { archetype: Archetype, indices: { number } } - - local world_query: (World, ...i53) -> Query do + + local noop: Item = function() + return nil :: any + end + + local EmptyQuery: Query = { + __iter = function(): Item + return function() + return 1 + end + end, + next = noop :: Item, + replace = noop :: (Query, ...any) -> (), + without = function(self: Query, ...) + return self + end + } + + setmetatable(EmptyQuery, EmptyQuery) + local indices: { { number } } local compatibleArchetypes: { Archetype } local length