From 8f74c9c8fc5769b5cfc182bf096b36b0f8ad1ee0 Mon Sep 17 00:00:00 2001 From: Michael Pilquist Date: Sat, 25 Nov 2017 08:52:22 -0500 Subject: [PATCH 1/2] Removed deprecation of >> and changed its param to be a by-name --- core/src/main/scala/cats/FlatMap.scala | 5 ----- core/src/main/scala/cats/syntax/flatMap.scala | 15 +++++++++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/src/main/scala/cats/FlatMap.scala b/core/src/main/scala/cats/FlatMap.scala index 1c4b12f0f3..cec786c763 100644 --- a/core/src/main/scala/cats/FlatMap.scala +++ b/core/src/main/scala/cats/FlatMap.scala @@ -20,11 +20,6 @@ import simulacrum.typeclass @typeclass trait FlatMap[F[_]] extends Apply[F] { def flatMap[A, B](fa: F[A])(f: A => F[B]): F[B] - /** - * Alias for [[flatMap]]. - */ - def >>=[A, B](fa: F[A])(f: A => F[B]): F[B] = flatMap(fa)(f) - /** * "flatten" a nested `F` of `F` structure into a single-layer `F` structure. * diff --git a/core/src/main/scala/cats/syntax/flatMap.scala b/core/src/main/scala/cats/syntax/flatMap.scala index 4342b42788..e3c8f14a5e 100644 --- a/core/src/main/scala/cats/syntax/flatMap.scala +++ b/core/src/main/scala/cats/syntax/flatMap.scala @@ -18,8 +18,19 @@ trait FlatMapSyntax extends FlatMap.ToFlatMapOps { final class FlatMapOps[F[_], A](val fa: F[A]) extends AnyVal { - @deprecated("Use *> instead", "1.0.0-RC1") - def >>[B](fb: F[B])(implicit F: FlatMap[F]): F[B] = F.followedBy(fa)(fb) + /** + * Alias for [[flatMap]]. + */ + def >>=[B](f: A => F[B])(implicit F: FlatMap[F]): F[B] = F.flatMap(fa)(f) + + /** + * Alias for `fa.flatMap(_ => fb)`. + * + * Unlike `*>`, `fb` is defined as a by-name parameter, allowing this + * method to be used in cases where computing `fb` is not stack safe + * unless suspended in a `flatMap`. + */ + def >>[B](fb: => F[B])(implicit F: FlatMap[F]): F[B] = F.flatMap(fa)(_ => fb) @deprecated("Use <* instead", "1.0.0-RC1") def <<[B](fb: F[B])(implicit F: FlatMap[F]): F[A] = F.forEffect(fa)(fb) From 2c635520b17da1790142c927cfb9325808532e40 Mon Sep 17 00:00:00 2001 From: Michael Pilquist Date: Sat, 25 Nov 2017 09:41:30 -0500 Subject: [PATCH 2/2] Adjusted mima exclusions --- build.sbt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 5cab6a43d7..5eb9765070 100644 --- a/build.sbt +++ b/build.sbt @@ -247,7 +247,15 @@ def mimaSettings(moduleName: String) = Seq( exclude[ReversedMissingMethodProblem]("cats.Foldable#Ops.collectFirst"), exclude[ReversedMissingMethodProblem]("cats.NonEmptyParallel.parForEffect"), exclude[ReversedMissingMethodProblem]("cats.NonEmptyParallel.parFollowedBy"), - exclude[ReversedMissingMethodProblem]("cats.syntax.ParallelSyntax.catsSyntaxParallelAp") + exclude[ReversedMissingMethodProblem]("cats.syntax.ParallelSyntax.catsSyntaxParallelAp"), + exclude[DirectMissingMethodProblem]("cats.FlatMap.>>="), + exclude[DirectMissingMethodProblem]("cats.FlatMap#Ops.>>="), + exclude[IncompatibleMethTypeProblem]("cats.syntax.FlatMapOps.>>"), + exclude[IncompatibleMethTypeProblem]("cats.syntax.FlatMapOps.>>$extension"), + exclude[DirectMissingMethodProblem]("cats.data.IndexedStateTMonad.>>="), + exclude[DirectMissingMethodProblem]("cats.data.RWSTMonad.>>="), + exclude[DirectMissingMethodProblem]("cats.data.CokleisliMonad.>>="), + exclude[DirectMissingMethodProblem]("cats.instances.FlatMapTuple2.>>=") ) } )