File tree 1 file changed +29
-0
lines changed
1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change
1
+ trait Alternative [F [_]]
2
+
3
+ opaque type Derived [A ] = A
4
+ object Derived :
5
+ extension [A ](derived : Derived [A ]) def instance : A = derived
6
+ infix type <<< [F [_], G [_]] = [x] =>> F [G [x]]
7
+
8
+ import Derived .*
9
+ import scala .compiletime .summonInline
10
+
11
+ type DerivedAlternative [F [_]] = Derived [Alternative [F ]]
12
+ object DerivedAlternative :
13
+ inline def apply [F [_]]: Alternative [F ] =
14
+ import DerivedAlternative .given
15
+ summonInline[DerivedAlternative [F ]].instance
16
+ given nested [F [_], G [_]]: DerivedAlternative [F <<< G ] = ???
17
+
18
+ object auto :
19
+ object alternative :
20
+ transparent inline given [F [_]]: Alternative [F ] = DerivedAlternative [F ]
21
+
22
+ trait Test :
23
+ import Test .*
24
+ import auto .alternative .given
25
+ val fails = summon[Alternative [OptList ]]
26
+
27
+ // Fails if companion object defined AFTER trait
28
+ object Test :
29
+ type OptList [A ] = Option [List [A ]]
You can’t perform that action at this time.
0 commit comments