From 4c9e77dfc7d7e941344c40d84a945ebfa6ab3e10 Mon Sep 17 00:00:00 2001 From: odersky Date: Thu, 3 Jul 2025 17:28:52 +0200 Subject: [PATCH] Test that no into on enums and current mirror behavior for into --- tests/neg/i23400.scala | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/neg/i23400.scala diff --git a/tests/neg/i23400.scala b/tests/neg/i23400.scala new file mode 100644 index 000000000000..08c75d279b87 --- /dev/null +++ b/tests/neg/i23400.scala @@ -0,0 +1,27 @@ +import scala.language.experimental.into +import Conversion.into + +import scala.deriving.Mirror + +object Opaques: + opaque into type MyInto[+A] >: A = A + +import Opaques.MyInto + +case class Foo(x: Int) +case class Bar(foo: into[Foo]) +case class Baz(foo: MyInto[Foo]) + +given Conversion[Int, Foo] = Foo(_) + +into enum Color: // error + case Red, Green + +def test = + val barMirror = summon[Mirror.Of[Bar]] + summon[barMirror.MirroredElemTypes =:= (into[Foo] *: EmptyTuple.type)] // error + summon[barMirror.MirroredElemTypes =:= (Foo *: EmptyTuple.type)] // ok + + val bazMirror = summon[Mirror.Of[Baz]] + summon[bazMirror.MirroredElemTypes =:= (MyInto[Foo] *: EmptyTuple.type)] // ok + summon[bazMirror.MirroredElemTypes =:= (Foo *: EmptyTuple.type)] // error \ No newline at end of file