diff --git a/kernel/shared/src/main/scala/cats/effect/kernel/MonadCancel.scala b/kernel/shared/src/main/scala/cats/effect/kernel/MonadCancel.scala index 177cd583c0..f05877f308 100644 --- a/kernel/shared/src/main/scala/cats/effect/kernel/MonadCancel.scala +++ b/kernel/shared/src/main/scala/cats/effect/kernel/MonadCancel.scala @@ -16,7 +16,7 @@ package cats.effect.kernel -import cats.{MonadError, Monoid, Semigroup} +import cats.{Id, MonadError, Monoid, Semigroup} import cats.data.{ EitherT, IndexedReaderWriterStateT, @@ -602,11 +602,11 @@ object MonadCancel { } } - trait Uncancelable[F[_], E] { this: MonadCancel[F, E] => + private val cachedIdPoll: Poll[Id] = new Poll[Id] { + def apply[A](fa: Id[A]): Id[A] = fa + } - private[this] val IdPoll = new Poll[F] { - def apply[A](fa: F[A]) = fa - } + trait Uncancelable[F[_], E] { this: MonadCancel[F, E] => def rootCancelScope: CancelScope = CancelScope.Uncancelable @@ -618,7 +618,7 @@ object MonadCancel { } def uncancelable[A](body: Poll[F] => F[A]): F[A] = - body(IdPoll) + body(MonadCancel.cachedIdPoll.asInstanceOf[Poll[F]]) } private[kernel] trait OptionTMonadCancel[F[_], E] extends MonadCancel[OptionT[F, *], E] {