@@ -42,32 +42,26 @@ val zzz = x ^^^ x ^^^ x
4242
4343
4444object  Minimized : 
45-   trait  DFVal [+ T  <:  Int , + P ]
4645
47-   trait  Summon [ R ,  T   <:   R ]
48-   given  [R ,  T   <:   R ]:  Summon [ R ,  T ] with  {}
46+   trait  Sub [ T ,  R   >:   T ]
47+   given  [T ,  R   >:   T ]:  Sub [ T ,  R ] with  {}
4948
50-   trait  Candidate [R ]: 
51-     type  OutW  <:  Int 
49+   trait  Candidate [- R ]: 
5250    type  OutP 
53-   given  [W  <:  Int , P , R  <:  DFVal [W , P ]]:  Candidate [R ] with 
54-     type  OutW  =  W 
51+   given  [P ]:  Candidate [Option [P ]] with 
5552    type  OutP  =  P 
5653
57-   extension  [L  <:  DFVal [Int , Any ]](lhs : L )(using  icL : Candidate [L ])
58-     def  ^^^ [R ](rhs : R )
59-               (using  icR : Candidate [R ])
60-               :  DFVal [icL.OutW , icL.OutP  |  icR.OutP ] =  ??? 
54+   extension  [L  <:  Option [Any ]](lhs : L )(using  icL : Candidate [L ])
55+     def  ^^^ [R ](rhs : R )(using  icR : Candidate [R ]):  Option [icL.OutP  |  icR.OutP ] =  ??? 
6156    def  ^^^  :  Unit  =  ??? 
6257
6358  extension  [L ](lhs : L )
64-     def  ^^^ [RW  <:  Int , RP ](rhs : DFVal [RW , RP ])
65-                           (using  es : Summon [L , lhs.type ])
66-                           (using  c : Candidate [L ])
67-                           (using  check : c.OutW  =:=  c.OutW )
68-                           :  DFVal [c.OutW , c.OutP  |  RP ] =  ??? 
59+     def  ^^^ [R ](rhs : Option [R ])
60+               (using  es : Sub [lhs.type , L ])
61+               (using  c : Candidate [L ])
62+               (using  check : c.OutP  =:=  c.OutP ):  Option [c.OutP  |  R ] =  ??? 
6963
70-   val  x :  DFVal [ 8 ,  true ] =  ??? 
64+   val  x :  Option [ true ] =  ??? 
7165  val  z1  =  x ^^^  x //  Ok
7266  val  z2  =  z1 ^^^  x //  Ok
7367  val  zzz  =  x ^^^  x ^^^  x //  Error before changes
0 commit comments