diff --git a/.changeset/itchy-carrots-fold.md b/.changeset/itchy-carrots-fold.md new file mode 100644 index 0000000000..189b6e83d8 --- /dev/null +++ b/.changeset/itchy-carrots-fold.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +Actually fix Cause equality diff --git a/packages/effect/src/internal/cause.ts b/packages/effect/src/internal/cause.ts index 0600d94916..b7bc12babf 100644 --- a/packages/effect/src/internal/cause.ts +++ b/packages/effect/src/internal/cause.ts @@ -686,8 +686,7 @@ const evaluateCause = ( break } case OpCodes.OP_FAIL: { - _parallel = HashSet.add(_parallel, cause._tag) - _parallel = HashSet.add(_parallel, cause.error) + _parallel = HashSet.add(_parallel, Chunk.make(cause._tag, cause.error)) if (stack.length === 0) { return [_parallel, _sequential] } @@ -695,8 +694,7 @@ const evaluateCause = ( break } case OpCodes.OP_DIE: { - _parallel = HashSet.add(_parallel, cause._tag) - _parallel = HashSet.add(_parallel, cause.defect) + _parallel = HashSet.add(_parallel, Chunk.make(cause._tag, cause.defect)) if (stack.length === 0) { return [_parallel, _sequential] } @@ -704,8 +702,7 @@ const evaluateCause = ( break } case OpCodes.OP_INTERRUPT: { - _parallel = HashSet.add(_parallel, cause._tag) - _parallel = HashSet.add(_parallel, cause.fiberId as unknown) + _parallel = HashSet.add(_parallel, Chunk.make(cause._tag, cause.fiberId as unknown)) if (stack.length === 0) { return [_parallel, _sequential] } diff --git a/packages/effect/test/Cause.test.ts b/packages/effect/test/Cause.test.ts index e838f3ec6a..207ee5dc97 100644 --- a/packages/effect/test/Cause.test.ts +++ b/packages/effect/test/Cause.test.ts @@ -363,5 +363,11 @@ describe("Cause", () => { it("equals keep account for the failure type", () => { expect(Equal.equals(Cause.die(0), Cause.fail(0))).toBe(false) + expect( + Equal.equals( + Cause.parallel(Cause.fail("fail1"), Cause.die("fail2")), + Cause.parallel(Cause.fail("fail2"), Cause.die("fail1")) + ) + ).toBe(false) }) })