Implicit keyword in LHS of for comprehension

Recently when I started to use for-comprehensions with monadic structures like Task a lot, I’ve noticed that this is not a valid Scala syntax

def app: Task[Unit] = 
  for {
    implicit foo <- createFoo
    implicit bar = createBarWithImplicitFoo
    _ <- runWithImplicitBar
  } yield ()

How hard would it be to make this valid Scala code?
Desugared version should look like this (and it compiles just fine)

createFoo.flatMap { implicit foo =>
}.flatMap { implicit bar =>
} (dates back to an era when the bug tracker was a mix of bugs and feature requests)

Oh, I see, there are so many issues linked I’ve lost a track. What blocks this feature from merging?

the story so far seems to end in the comments on

Actually, this is stuck because it requires a SIP and it’s missing a SIP champion. More details on

1 Like