@@ -386,7 +386,7 @@ object SyntaxSuite
386386 val done = a.tailRecM[F , B ](a => returnValue)
387387 }
388388
389- def testApplicativeError [F [_, _], E , A ](implicit F : ApplicativeError [F [E , * ], E ]): Unit = {
389+ def testApplicativeError [F [_, _], E , A , B ](implicit F : ApplicativeError [F [E , * ], E ]): Unit = {
390390 type G [X ] = F [E , X ]
391391
392392 val e = mock[E ]
@@ -409,12 +409,49 @@ object SyntaxSuite
409409
410410 val pfegea = mock[PartialFunction [E , G [A ]]]
411411 val gea4 = ga.recoverWith(pfegea)
412+
413+ val eb = mock[E => B ]
414+ val ab = mock[A => B ]
415+ val gb : G [B ] = gea.redeem(eb, ab)
412416 }
413417
414418 def testApplicativeErrorSubtype [F [_], A ](implicit F : ApplicativeError [F , CharSequence ]): Unit = {
415419 val fea = " meow" .raiseError[F , A ]
416420 }
417421
422+ def testMonadError [F [_, _], E , A , B ](implicit F : MonadError [F [E , * ], E ]): Unit = {
423+ type G [X ] = F [E , X ]
424+
425+ val e = mock[E ]
426+ val ga = e.raiseError[G , A ]
427+
428+ val gea = mock[G [A ]]
429+
430+ val ea = mock[E => A ]
431+ val gea1 = ga.handleError(ea)
432+
433+ val egea = mock[E => G [A ]]
434+ val gea2 = ga.handleErrorWith(egea)
435+
436+ val gxea = ga.attempt
437+
438+ val gxtea = ga.attemptT
439+
440+ val pfea = mock[PartialFunction [E , A ]]
441+ val gea3 = ga.recover(pfea)
442+
443+ val pfegea = mock[PartialFunction [E , G [A ]]]
444+ val gea4 = ga.recoverWith(pfegea)
445+
446+ val eb = mock[E => B ]
447+ val ab = mock[A => B ]
448+ val gb : G [B ] = gea.redeem(eb, ab)
449+
450+ val efb = mock[E => G [B ]]
451+ val afb = mock[A => G [B ]]
452+ val gb2 : G [B ] = gea.redeemWith(efb, afb)
453+ }
454+
418455 def testNested [F [_], G [_], A ]: Unit = {
419456 val fga : F [G [A ]] = mock[F [G [A ]]]
420457
0 commit comments