From b0b74d547b9b2530cff2237220dc805fb0c2fad1 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sun, 30 May 2021 21:48:10 +0200 Subject: [PATCH] Add regression test --- tests/neg/i12640.scala | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 tests/neg/i12640.scala diff --git a/tests/neg/i12640.scala b/tests/neg/i12640.scala new file mode 100644 index 000000000000..7946525deeeb --- /dev/null +++ b/tests/neg/i12640.scala @@ -0,0 +1,17 @@ +package x + +trait CpsMonad[F[_]]: + def pure[A](x:A): F[A] + def flatMap[A,B](fa:F[A])(f: A=>F[B]): F[B] + +abstract sealed class CpsStream[-F[_],+T] + +case class Cons[F[_],T](head:T, tailFun: ()=>F[CpsStream[F,T]]) extends CpsStream[F,T] + +case class Empty[F[_]]() extends CpsStream[F,Nothing] + +def unfold[S,F[_]:CpsMonad,T](s0:S)(f:S => F[Option[(S,T)]]):F[CpsStream[F,T]] = + summon[CpsMonad[F]].flatMap(f(s0)){ + case Some(s1,a) => Cons(a, () => unfold(s1,f)) // error // error + case None => summon[CpsMonad[F]].pure(Empty[F]()) + } \ No newline at end of file