File tree Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Original file line number Diff line number Diff line change
1
+ import scala .language .experimental .into
2
+ import Conversion .into
3
+
4
+ import scala .deriving .Mirror
5
+
6
+ object Opaques :
7
+ opaque into type MyInto [+ A ] >: A = A
8
+
9
+ import Opaques .MyInto
10
+
11
+ case class Foo (x : Int )
12
+ case class Bar (foo : into[Foo ])
13
+ case class Baz (foo : MyInto [Foo ])
14
+
15
+ given Conversion [Int , Foo ] = Foo (_)
16
+
17
+ into enum Color : // error
18
+ case Red , Green
19
+
20
+ def test =
21
+ val barMirror = summon[Mirror .Of [Bar ]]
22
+ summon[barMirror.MirroredElemTypes =:= (into[Foo ] *: EmptyTuple .type )] // error
23
+ summon[barMirror.MirroredElemTypes =:= (Foo *: EmptyTuple .type )] // ok
24
+
25
+ val bazMirror = summon[Mirror .Of [Baz ]]
26
+ summon[bazMirror.MirroredElemTypes =:= (MyInto [Foo ] *: EmptyTuple .type )] // ok
27
+ summon[bazMirror.MirroredElemTypes =:= (Foo *: EmptyTuple .type )] // error
You can’t perform that action at this time.
0 commit comments