@@ -668,6 +668,17 @@ sealed abstract private[data] class IRWSTInstances1 extends IRWSTInstances2 {
668668}
669669
670670sealed  abstract  private [data] class  IRWSTInstances2  extends  IRWSTInstances3  {
671+   implicit  def  catsDataNonEmptyAlternativeForIRWST [F [_], E , L , S ](implicit 
672+     FM :  Monad [F ],
673+     FA :  NonEmptyAlternative [F ],
674+     L0 :  Monoid [L ]
675+   ):  NonEmptyAlternative [IndexedReaderWriterStateT [F , E , L , S , S , * ]] = 
676+     new  RWSTNonEmptyAlternative [F , E , L , S ] {
677+       implicit  def  G :  NonEmptyAlternative [F ] =  FA 
678+       implicit  def  F :  Monad [F ] =  FM 
679+       implicit  def  L :  Monoid [L ] =  L0 
680+     }
681+ 
671682  implicit  def  catsDataAlternativeForIRWST [F [_], E , L , S ](implicit 
672683    FM :  Monad [F ],
673684    FA :  Alternative [F ],
@@ -789,6 +800,10 @@ sealed abstract private[data] class RWSTMonad[F[_], E, L, S]
789800
790801sealed  abstract  private [data] class  IRWSTSemigroupK [F [_], E , L , SA , SB ] extends  IRWSTSemigroupK1 [F , E , L , SA , SB ]
791802
803+ sealed  abstract  private [data] class  RWSTNonEmptyAlternative [F [_], E , L , S ]
804+     extends  IRWSTFunctor [F , E , L , S , S ]
805+     with  RWSTNonEmptyAlternative1 [F , E , L , S ]
806+ 
792807sealed  abstract  private [data] class  RWSTAlternative [F [_], E , L , S ]
793808    extends  IRWSTFunctor [F , E , L , S , S ]
794809    with  RWSTAlternative1 [F , E , L , S ]
@@ -821,8 +836,54 @@ private trait IRWSTSemigroupK1[F[_], E, L, SA, SB] extends SemigroupK[IndexedRea
821836    }
822837}
823838
824- private  trait  RWSTAlternative1 [F [_], E , L , S ]
839+ private  trait  RWSTNonEmptyAlternative1 [F [_], E , L , S ]
825840    extends  IRWSTSemigroupK1 [F , E , L , S , S ]
841+     with  NonEmptyAlternative [ReaderWriterStateT [F , E , L , S , * ]] {
842+ 
843+   implicit  def  F :  Monad [F ]
844+   def  G :  NonEmptyAlternative [F ]
845+   implicit  def  L :  Monoid [L ]
846+ 
847+   //  Enforces binary compatibility for RWSTAlternative1 between 2.6.1 and newer versions.
848+   final  protected  def  pure0 [A ](a : A ):  ReaderWriterStateT [F , E , L , S , A ] = 
849+     ReaderWriterStateT .pure[F , E , L , S , A ](a)
850+ 
851+   //  Enforces binary compatibility for RWSTAlternative1 between 2.6.1 and newer versions.
852+   final  protected  def  ap0 [A , B ](
853+     ff : ReaderWriterStateT [F , E , L , S , A  =>  B ]
854+   )(
855+     fa : ReaderWriterStateT [F , E , L , S , A ]
856+   ):  ReaderWriterStateT [F , E , L , S , B ] = 
857+     ff.flatMap(f =>  fa.map(f)(F ))(F , L )
858+ 
859+   def  pure [A ](a : A ):  ReaderWriterStateT [F , E , L , S , A ] =  pure0(a)
860+ 
861+   def  ap [A , B ](
862+     ff : ReaderWriterStateT [F , E , L , S , A  =>  B ]
863+   )(
864+     fa : ReaderWriterStateT [F , E , L , S , A ]
865+   ):  ReaderWriterStateT [F , E , L , S , B ] = 
866+     ap0(ff)(fa)
867+ 
868+   override  def  prependK [A ](
869+     a : A ,
870+     fa : IndexedReaderWriterStateT [F , E , L , S , S , A ]
871+   ):  IndexedReaderWriterStateT [F , E , L , S , S , A ] = 
872+     IndexedReaderWriterStateT  { (e, s) => 
873+       G .prependK((L .empty, s, a), fa.run(e, s))
874+     }
875+ 
876+   override  def  appendK [A ](
877+     fa : IndexedReaderWriterStateT [F , E , L , S , S , A ],
878+     a : A 
879+   ):  IndexedReaderWriterStateT [F , E , L , S , S , A ] = 
880+     IndexedReaderWriterStateT  { (e, s) => 
881+       G .appendK(fa.run(e, s), (L .empty, s, a))
882+     }
883+ }
884+ 
885+ private  trait  RWSTAlternative1 [F [_], E , L , S ]
886+     extends  RWSTNonEmptyAlternative1 [F , E , L , S ]
826887    with  Alternative [ReaderWriterStateT [F , E , L , S , * ]] {
827888
828889  implicit  def  F :  Monad [F ]
@@ -831,11 +892,15 @@ private trait RWSTAlternative1[F[_], E, L, S]
831892
832893  def  empty [A ]:  ReaderWriterStateT [F , E , L , S , A ] =  ReaderWriterStateT .liftF(G .empty[A ])
833894
834-   def  pure [A ](a : A ):  ReaderWriterStateT [F , E , L , S , A ] =  ReaderWriterStateT .pure[F , E , L , S , A ](a)
895+   //  Must exist in this trait for binary compatibility.
896+   override  def  pure [A ](a : A ):  ReaderWriterStateT [F , E , L , S , A ] = 
897+     pure0(a)
835898
836-   def  ap [A , B ](
899+   //  Must exist in this trait for binary compatibility.
900+   override  def  ap [A , B ](
837901    ff : ReaderWriterStateT [F , E , L , S , A  =>  B ]
838-   )(fa : ReaderWriterStateT [F , E , L , S , A ]):  ReaderWriterStateT [F , E , L , S , B ] = 
839-     ff.flatMap(f =>  fa.map(f)(F ))(F , L )
840- 
902+   )(
903+     fa : ReaderWriterStateT [F , E , L , S , A ]
904+   ):  ReaderWriterStateT [F , E , L , S , B ] = 
905+     ap0(ff)(fa)
841906}
0 commit comments