From bfb3d42d358a5bf67abb3fdae19ed225dfbedb93 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Sun, 30 Oct 2022 20:59:56 +0000 Subject: [PATCH] Relax constraint for `Signal.constant` --- core/shared/src/main/scala/fs2/concurrent/Signal.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/shared/src/main/scala/fs2/concurrent/Signal.scala b/core/shared/src/main/scala/fs2/concurrent/Signal.scala index 8188b815f7..1e6a68c868 100644 --- a/core/shared/src/main/scala/fs2/concurrent/Signal.scala +++ b/core/shared/src/main/scala/fs2/concurrent/Signal.scala @@ -23,7 +23,7 @@ package fs2 package concurrent import cats.data.OptionT -import cats.effect.kernel.{Concurrent, Deferred, Ref} +import cats.effect.kernel.{Concurrent, Deferred, Ref, Spawn} import cats.syntax.all._ import cats.{Applicative, Functor, Invariant, Monad} @@ -110,13 +110,16 @@ trait Signal[F[_], A] { } object Signal extends SignalInstances { - def constant[F[_], A](a: A)(implicit F: Concurrent[F]): Signal[F, A] = + def constant[F[_], A](a: A)(implicit F: Spawn[F]): Signal[F, A] = new Signal[F, A] { def get: F[A] = F.pure(a) def continuous: Stream[Pure, A] = Stream.constant(a) def discrete: Stream[F, A] = Stream(a) ++ Stream.never } + @deprecated("Use overload with Spawn constraint", "3.4.0") + def constant[F[_], A](a: A, F: Concurrent[F]): Signal[F, A] = constant(a)(F) + def mapped[F[_]: Functor, A, B](fa: Signal[F, A])(f: A => B): Signal[F, B] = new Signal[F, B] { def continuous: Stream[F, B] = fa.continuous.map(f)