diff --git a/.changeset/wicked-apples-press.md b/.changeset/wicked-apples-press.md new file mode 100644 index 00000000000..5b4cb423315 --- /dev/null +++ b/.changeset/wicked-apples-press.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +Prevent Effect.if from crashing when first argument is not an Effect diff --git a/packages/effect/src/internal/core.ts b/packages/effect/src/internal/core.ts index 9a2fe50c234..fffd2f6119c 100644 --- a/packages/effect/src/internal/core.ts +++ b/packages/effect/src/internal/core.ts @@ -952,7 +952,8 @@ export const if_ = dual< (self: boolean | Effect.Effect, { onFalse, onTrue }: { readonly onTrue: Effect.Effect readonly onFalse: Effect.Effect - }) => typeof self === "boolean" ? (self ? onTrue : onFalse) : flatMap(self, (b) => (b ? onTrue : onFalse)) + // eslint-disable-next-line no-extra-boolean-cast + }) => isEffect(self) ? flatMap(self, (b) => (b ? onTrue : onFalse)) : Boolean(self) ? onTrue : onFalse ) /* @internal */