@@ -19,7 +19,7 @@ package effect
1919package  kernel 
2020
2121import  cats .data .State 
22- import  cats .effect .kernel .Ref .TransformedRef 
22+ import  cats .effect .kernel .Ref .{ TransformedRef ,  TransformedRef2 } 
2323import  cats .syntax .all ._ 
2424
2525/** 
@@ -186,8 +186,12 @@ abstract class Ref[F[_], A] extends RefSource[F, A] with RefSink[F, A] {
186186  /**  
187187   * Modify the context `F` using transformation `f`. 
188188   */  
189-   def  mapK [G [_]](f : F  ~>  G )(implicit  F :  Functor [F ]):  Ref [G , A ] = 
190-     new  TransformedRef (this , f)
189+   def  mapK [G [_]](f : F  ~>  G )(implicit  G :  Functor [G ], dummy : DummyImplicit ):  Ref [G , A ] = 
190+     new  TransformedRef2 (this , f)
191+ 
192+   @ deprecated(" Use mapK with Functor[G] constraint" " 3.6.0" 
193+   def  mapK [G [_]](f : F  ~>  G , F :  Functor [F ]):  Ref [G , A ] = 
194+     new  TransformedRef (this , f)(F )
191195}
192196
193197object  Ref  {
@@ -361,6 +365,27 @@ object Ref {
361365    def  empty [A :  Monoid ]:  F [Ref [F , A ]] =  of(Monoid [A ].empty)
362366  }
363367
368+   final  private [kernel] class  TransformedRef2 [F [_], G [_], A ](
369+       underlying : Ref [F , A ],
370+       trans : F  ~>  G )(
371+       implicit  G :  Functor [G ]
372+   ) extends  Ref [G , A ] {
373+     override  def  get :  G [A ] =  trans(underlying.get)
374+     override  def  set (a : A ):  G [Unit ] =  trans(underlying.set(a))
375+     override  def  getAndSet (a : A ):  G [A ] =  trans(underlying.getAndSet(a))
376+     override  def  tryUpdate (f : A  =>  A ):  G [Boolean ] =  trans(underlying.tryUpdate(f))
377+     override  def  tryModify [B ](f : A  =>  (A , B )):  G [Option [B ]] =  trans(underlying.tryModify(f))
378+     override  def  update (f : A  =>  A ):  G [Unit ] =  trans(underlying.update(f))
379+     override  def  modify [B ](f : A  =>  (A , B )):  G [B ] =  trans(underlying.modify(f))
380+     override  def  tryModifyState [B ](state : State [A , B ]):  G [Option [B ]] = 
381+       trans(underlying.tryModifyState(state))
382+     override  def  modifyState [B ](state : State [A , B ]):  G [B ] =  trans(underlying.modifyState(state))
383+ 
384+     override  def  access :  G [(A , A  =>  G [Boolean ])] = 
385+       G .compose[(A , * )].compose[A  =>  * ].map(trans(underlying.access))(trans(_))
386+   }
387+ 
388+   @ deprecated(" Use TransformedRef2 with Functor[G] constraint" " 3.6.0" 
364389  final  private [kernel] class  TransformedRef [F [_], G [_], A ](
365390      underlying : Ref [F , A ],
366391      trans : F  ~>  G )(
0 commit comments