diff --git a/packages/charm/src/signals.luau b/packages/charm/src/signals.luau index d6520ea..0fad3e2 100644 --- a/packages/charm/src/signals.luau +++ b/packages/charm/src/signals.luau @@ -324,9 +324,9 @@ local function effectScope(fn: () -> ...() -> ()?): () -> () if activeScope then link(e, activeScope) end - local prev = setCurrentSub(e) + local prev = setCurrentScope(e) local success, result = pcall(fn) - setCurrentSub(prev) + setCurrentScope(prev) if not success then error(result) end diff --git a/tests/signals/effectScope.spec.luau b/tests/signals/effectScope.spec.luau index 83dc2cd..1ac0317 100644 --- a/tests/signals/effectScope.spec.luau +++ b/tests/signals/effectScope.spec.luau @@ -44,7 +44,7 @@ test("should run effect cleanup", function() assert(cleanups == 1, "should skip redundant cleanup") end) -test("should not run indirect effect cleanup", function() +test("should run indirect effect cleanup", function() local cleanups = 0 local cleanup @@ -58,9 +58,9 @@ test("should not run indirect effect cleanup", function() assert(cleanups == 0, "should not cleanup immediately") stopScope() - assert(cleanups == 0, "should be detached from parent dispose") + assert(cleanups == 1, "should cleanup from parent dispose") cleanup() - assert(cleanups == 1, "should cleanup after inner dispose") + assert(cleanups == 1, "should skip redundant dispose") end) return {}