MCPcopy Index your code
hub / github.com/Effect-TS/effect / evaluateCause

Function evaluateCause

packages/effect/src/internal/cause.ts:572–645  ·  view source on GitHub ↗
(
  self: Cause.Cause<unknown>
)

Source from the content-addressed store, hash-verified

570 * @internal
571 */
572const evaluateCause = (
573 self: Cause.Cause<unknown>
574): [HashSet.HashSet<unknown>, Chunk.Chunk<Cause.Cause<unknown>>] => {
575 let cause: Cause.Cause<unknown> | undefined = self
576 const stack: Array<Cause.Cause<unknown>> = []
577 let _parallel = HashSet.empty<unknown>()
578 let _sequential = Chunk.empty<Cause.Cause<unknown>>()
579 while (cause !== undefined) {
580 switch (cause._tag) {
581 case OpCodes.OP_EMPTY: {
582 if (stack.length === 0) {
583 return [_parallel, _sequential]
584 }
585 cause = stack.pop()
586 break
587 }
588 case OpCodes.OP_FAIL: {
589 _parallel = HashSet.add(_parallel, Chunk.make(cause._tag, cause.error))
590 if (stack.length === 0) {
591 return [_parallel, _sequential]
592 }
593 cause = stack.pop()
594 break
595 }
596 case OpCodes.OP_DIE: {
597 _parallel = HashSet.add(_parallel, Chunk.make(cause._tag, cause.defect))
598 if (stack.length === 0) {
599 return [_parallel, _sequential]
600 }
601 cause = stack.pop()
602 break
603 }
604 case OpCodes.OP_INTERRUPT: {
605 _parallel = HashSet.add(_parallel, Chunk.make(cause._tag, cause.fiberId as unknown))
606 if (stack.length === 0) {
607 return [_parallel, _sequential]
608 }
609 cause = stack.pop()
610 break
611 }
612 case OpCodes.OP_SEQUENTIAL: {
613 switch (cause.left._tag) {
614 case OpCodes.OP_EMPTY: {
615 cause = cause.right
616 break
617 }
618 case OpCodes.OP_SEQUENTIAL: {
619 cause = sequential(cause.left.left, sequential(cause.left.right, cause.right))
620 break
621 }
622 case OpCodes.OP_PARALLEL: {
623 cause = parallel(
624 sequential(cause.left.left, cause.right),
625 sequential(cause.left.right, cause.right)
626 )
627 break
628 }
629 default: {

Callers 2

causeEqualsFunction · 0.85
flattenCauseLoopFunction · 0.85

Calls 5

getBugErrorMessageFunction · 0.85
sequentialFunction · 0.70
parallelFunction · 0.70
addMethod · 0.65
makeMethod · 0.65

Tested by

no test coverage detected