From e460846dea19ff04c948c4a71b67c7346e9dc855 Mon Sep 17 00:00:00 2001 From: littensy <56808540+littensy@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:35:35 -0700 Subject: [PATCH] refactor: check type of cleanup --- packages/charm/src/init.luau | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/charm/src/init.luau b/packages/charm/src/init.luau index ce06814..aadbb52 100644 --- a/packages/charm/src/init.luau +++ b/packages/charm/src/init.luau @@ -226,10 +226,12 @@ local function run(effect: EffectNode) purgeDeps(effect) - if not success then + if success then + if type(result) == "function" then + table.insert(effect.cleanups, wrapUserSpace(result)) + end + else error(result, 0) - elseif result then - table.insert(effect.cleanups, wrapUserSpace(result)) end -- If the effect was disposed during execution but before a cleanup was @@ -627,7 +629,7 @@ local function effect(fn: () -> ...Cleanup?): Cleanup activeSub = prevSub if success then - if result then + if type(result) == "function" then table.insert(node.cleanups, wrapUserSpace(result)) end endBatch() @@ -665,10 +667,12 @@ local function effectScope(fn: () -> ...Cleanup?, detached: boolean?): Cleanup local success, result = pcall(wrapUserSpace(fn)) activeSub = prevSub - if not success then + if success then + if type(result) == "function" then + table.insert(node.cleanups, wrapUserSpace(result)) + end + else error(result, 2) - elseif result then - table.insert(node.cleanups, wrapUserSpace(result)) end return function()