Skip to content

Commit e3b652d

Browse files
oderskymichelou
authored andcommitted
More regression tests
Closes scala#9287 Closes scala#12640 Closes scala#12896
1 parent 133cb46 commit e3b652d

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

tests/neg/i12640.scala

Lines changed: 17 additions & 0 deletions
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 (used to crash)
16+
case None => summon[CpsMonad[F]].pure(Empty[F]())
17+
}

tests/neg/i9287.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
object Foo {
2+
Nil {
3+
class i0 { a: i2 => // error
4+
class i1
5+
}
6+
} // error
7+
}

tests/pos/i12896.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
trait IO[E] {
2+
def map[B](f: Any => B): IO[E] = ???
3+
def flatMap[C](f: Any => IO[C]): IO[E | C] = ???
4+
}
5+
6+
class Test {
7+
def test: Unit = {
8+
val a: IO[Nothing] = ???
9+
10+
val d = a.flatMap(y => a.flatMap(z => a.map(_ => z)))
11+
}
12+
}

0 commit comments

Comments
 (0)