Closed as not planned
Description
Compiler version
The bug is present in builds since 3.1.2-RC1 and present in current nightly build 3.2.0-RC1-bin-20220308-29073f1-NIGHTLY,
Minimized code
The following code was minimalized from https://github.com/tpolecat/doobie, it compiles with Scala 3.1.1
https://github.dev/tpolecat/doobie/blob/0ead51d4628929db46b29c446eeeef7b68ddaf30/modules/core/src/main/scala/doobie/util/write.scala#L49-L56
sealed abstract class Nullability extends Product with Serializable
object Nullability {
sealed abstract class NullabilityKnown extends Nullability
case object NoNulls extends NullabilityKnown
case object Nullable extends NullabilityKnown
}
import Nullability.*
abstract class Put[A]
sealed trait Elem
object Elem {
final case class Arg[A](a: A, p: Put[A]) extends Elem
final case class Opt[A](a: Option[A], p: Put[A]) extends Elem
}
class Write[A]{
def toList(a: A): List[Any] = ???
def puts: List[(Put[_], NullabilityKnown)] = ???
def toFragment(a: A) = {
(puts zip toList(a)).map {
case ((p: Put[a], NoNulls), a) => Elem.Arg(a.asInstanceOf[a], p)
case ((p: Put[a], Nullable), a) => Elem.Opt(a.asInstanceOf[Option[a]], p)
}
}
}
Output
[error] ./test.scala:23:71: Found: (p : Put[a])
[error] Required: Put[Any]
[error] case ((p: Put[a], NoNulls), a) => Elem.Arg(a.asInstanceOf[a], p)
[error] ^
[error] ./test.scala:24:80: Found: (p : Put[a])
[error] Required: Put[Any]
[error] case ((p: Put[a], Nullable), a) => Elem.Opt(a.asInstanceOf[Option[a]], p)```
[error] ^
## Expectation
The snippet compiles with Scala up to 3.1.1