- Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
area:match-typesitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore
Milestone
Description
https://scala3.westeurope.cloudapp.azure.com/job/buildCommunityProject/38542/
Scala version: 3.2.2-RC2
Bisect points to 46e3d77
Reproducer:
def toCsvFlat[A <: Product](a: A)(using m: scala.deriving.Mirror.ProductOf[A]) = { def flatTuple(any: Any): Tuple = any match case p: Product => p.productIterator.map(flatTuple).foldLeft(EmptyTuple: Tuple)(_ ++ _) case a => Tuple1(a) val tuple = flatTuple(Tuple.fromProductTyped(a)).toList }Output:
-- [E007] Type Mismatch Error: /workspace/bisect/test.scala:6:51 --------------- 6 | val tuple = flatTuple(Tuple.fromProductTyped(a)).toList | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |Found: List[Tuple.Union[(?1 : Tuple)]] |Required: List[ | Tuple match { | case EmptyTuple => Nothing | case h *: t => h | scala.Tuple.Fold[t, Nothing, [x, y] =>> x | y] | } |] | |where: ?1 is an unknown value of type Tuple | | |Note: a match type could not be fully reduced: | | trying to reduce Tuple.Union[(?1 : Tuple)] | trying to reduce scala.Tuple.Fold[(?1 : Tuple), Nothing, [x, y] =>> x | y] | failed since selector (?1 : Tuple) | does not match case EmptyTuple => Nothing | and cannot be shown to be disjoint from it either. | Therefore, reduction cannot advance to the remaining case | | case h *: t => h | scala.Tuple.Fold[t, Nothing, [x, y] =>> x | y] |Metadata
Metadata
Labels
area:match-typesitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore