Skip to content

Commit d28b891

Browse files
authored
Merge pull request #12649 from dotty-staging/fix-12640
Show root of stackoverflow in IsFullyDefinedAccumulator
2 parents 56abade + b0b74d5 commit d28b891

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

tests/neg/i12640.scala

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package x
2+
3+
trait CpsMonad[F[_]]:
4+
def pure[A](x:A): F[A]
5+
def flatMap[A,B](fa:F[A])(f: A=>F[B]): F[B]
6+
7+
abstract sealed class CpsStream[-F[_],+T]
8+
9+
case class Cons[F[_],T](head:T, tailFun: ()=>F[CpsStream[F,T]]) extends CpsStream[F,T]
10+
11+
case class Empty[F[_]]() extends CpsStream[F,Nothing]
12+
13+
def unfold[S,F[_]:CpsMonad,T](s0:S)(f:S => F[Option[(S,T)]]):F[CpsStream[F,T]] =
14+
summon[CpsMonad[F]].flatMap(f(s0)){
15+
case Some(s1,a) => Cons(a, () => unfold(s1,f)) // error // error
16+
case None => summon[CpsMonad[F]].pure(Empty[F]())
17+
}

0 commit comments

Comments
 (0)