diff --git a/.changeset/fast-experts-melt.md b/.changeset/fast-experts-melt.md index fc77ccec73..fb610b129b 100644 --- a/.changeset/fast-experts-melt.md +++ b/.changeset/fast-experts-melt.md @@ -2,4 +2,4 @@ "effect": patch --- -fix Unify for RcRef & Deferred +fix Unify for Deferred diff --git a/packages/effect/dtslint/Unify.ts b/packages/effect/dtslint/Unify.ts index c2a59db3ac..32185fdbe6 100644 --- a/packages/effect/dtslint/Unify.ts +++ b/packages/effect/dtslint/Unify.ts @@ -77,7 +77,7 @@ export type SubscriptionRefUnify = Unify.Unify< | SubscriptionRef.SubscriptionRef<1> | SubscriptionRef.SubscriptionRef<"a"> > -// $ExpectType RcRef<1, 2> | RcRef<"a", "b"> +// $ExpectType RcRef<"a" | 1, "b" | 2> export type RcRefUnify = Unify.Unify< | RcRef.RcRef<1, 2> | RcRef.RcRef<"a", "b"> @@ -138,7 +138,7 @@ export type ResourceUnify = Unify.Unify< | Resource.Resource > -// $ExpectType 0 | Option | Ref<1> | Ref<"a"> | SynchronizedRef<1> | SynchronizedRef<"a"> | SubscriptionRef<1> | SubscriptionRef<"a"> | RcRef<"a", "b"> | Deferred<"a", "b"> | FiberRef<1> | FiberRef<"a"> | ManagedRuntime<"a", "b"> | Queue<1> | Queue<"a"> | Dequeue<"a" | 1> | Pool<1, 2> | Pool<"a", "b" | "c"> | ScopedRef<1> | ScopedRef<"a"> | Resource<"a", "b"> | RcRef<1, 0> | Deferred<1, 0> | Resource<1, 0> | Latch | ManagedRuntime<1, 0> | Fiber<"a" | 1, 0 | "b"> | RuntimeFiber<"a" | 1, 0 | "b"> | Either<"a" | 1, 0 | "b"> | Effect<"a" | 1, 0 | "b", "R" | "R1"> +// $ExpectType 0 | Option | Ref<1> | Ref<"a"> | SynchronizedRef<1> | SynchronizedRef<"a"> | SubscriptionRef<1> | SubscriptionRef<"a"> | Deferred<"a", "b"> | FiberRef<1> | FiberRef<"a"> | ManagedRuntime<"a", "b"> | Queue<1> | Queue<"a"> | Dequeue<"a" | 1> | Pool<1, 2> | Pool<"a", "b" | "c"> | ScopedRef<1> | ScopedRef<"a"> | Resource<"a", "b"> | Deferred<1, 0> | Resource<1, 0> | Latch | ManagedRuntime<1, 0> | RcRef<"a" | 1, 0 | "b"> | Fiber<"a" | 1, 0 | "b"> | RuntimeFiber<"a" | 1, 0 | "b"> | Either<"a" | 1, 0 | "b"> | Effect<"a" | 1, 0 | "b", "R" | "R1"> export type AllUnify = Unify.Unify< | Either.Either<1, 0> | Either.Either<"a", "b"> diff --git a/packages/effect/src/RcRef.ts b/packages/effect/src/RcRef.ts index 7586c2a6d2..e014272d9f 100644 --- a/packages/effect/src/RcRef.ts +++ b/packages/effect/src/RcRef.ts @@ -39,7 +39,8 @@ export interface RcRef * @since 3.8.0 */ export interface RcRefUnify extends Effect.EffectUnify { - RcRef?: () => Extract> + RcRef?: () => A[Unify.typeSymbol] extends RcRef | infer _ ? RcRef + : never } /**