-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Description
The following causes some noise during migration to this plugin:
import cats.implicits._
case class Foo(a: Long)
for {
Foo(a) <- Either.right[String, Foo](Foo(1))
b <- Either.right(Foo(2))
Foo(c) = b
} yield a + c
yields
scala> for { Foo(a) <- Either.right[String, Foo](Foo(1)); b <- Either.right(Foo(2)); Foo(c) = b } yield a + c
<console>:17: warning: [wartremover:NonUnitStatements] Statements must return Unit
for { Foo(a) <- Either.right[String, Foo](Foo(1)); b <- Either.right(Foo(2)); Foo(c) = b } yield a + c
^
res1: scala.util.Either[String,Long] = Right(3)
Walking through the tree, I can't even see where this error is coming from. By spacing out the above code, I can narrow it down to:
<console>:20: warning: [wartremover:NonUnitStatements] Statements must return Unit
Foo(c) = b
^
Any pointers or insight would be appreciated. This is already excellent, just looking to learn.
The simplified tree from the SBT console is:
object $iw extends scala.AnyRef {
def <init>() = {
super.<init>();
()
};
val res1 = Either.right[String, Foo](Foo(1)).withFilter((check$ifrefutable$1) =>
check$ifrefutable$1: @scala.unchecked match {
case Foo((a @ _)) => true
case _ => false
}
)
.flatMap((x$4) =>
x$4: @scala.unchecked match {
case Foo((a @ _)) =>
Either.right(Foo(2))
.map((b) => {
<synthetic> <artifact> private[this] val x$2 = b: @scala.unchecked match {
case (x$1 @ Foo((c @ _))) => scala.Tuple2(x$1, c)
};
val x$1 = x$2._1;
val c = x$2._2;
scala.Tuple2(b, x$1)
})
.map((x$3) =>
x$3: @scala.unchecked match {
case scala.Tuple2((b @ _), Foo((c @ _))) => a.$plus(c)
}
)
}
)
}
Metadata
Metadata
Assignees
Labels
No labels