Skip to content

Commit eda25ae

Browse files
Add regression test for #21215 fixed in #21226
1 parent a64c295 commit eda25ae

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

Diff for: tests/pos/i21215.scala

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
trait FlatMap[F[_]]:
3+
def flatMap[A, B](fa: F[A])(f: A => F[B]): F[B] = ???
4+
def ifM[B](ifTrue: => F[B], ifFalse: => F[B])(implicit F: FlatMap[F]): F[B] = ???
5+
trait Monad[F[_]] extends FlatMap[F]
6+
trait MonadError[F[_], E] extends Monad[F]:
7+
def raiseError[A](e: E): F[A]
8+
trait Temporal[F[_]] extends MonadError[F, Throwable]
9+
10+
trait FlatMapOps[F[_], A]:
11+
def flatMap[B](f: A => F[B]): F[B] = ???
12+
def map[B](f: A => B): F[B] = ???
13+
def ifM[B](ifTrue: => F[B], ifFalse: => F[B])(implicit F: FlatMap[F]): F[B] = ???
14+
15+
implicit def toFlatMapOps[F[_], A](target: F[A])(implicit tc: FlatMap[F]): FlatMapOps[F, A] = ???
16+
17+
abstract class Ref[F[_], A]
18+
object Ref:
19+
final class ApplyBuilders[F[_]]:
20+
def of[A](a: A): F[Ref[F, A]] = ???
21+
def apply[F[_]]: ApplyBuilders[F] = ???
22+
23+
trait DatabaseMetaData[F[_]]
24+
class DatabaseMetaDataImpl[F[_]](
25+
statementClosed: Ref[F, Boolean],
26+
resultSetClosed: Ref[F, Boolean]
27+
) extends DatabaseMetaData[F]
28+
29+
trait LdbcConnection[F[_]]:
30+
def getMetaData(): F[DatabaseMetaData[F]]
31+
32+
class ConnectionImpl[F[_]: Temporal](using ev: MonadError[F, Throwable])
33+
extends LdbcConnection[F]:
34+
def isClosed(): F[Boolean] = ???
35+
override def getMetaData(): F[DatabaseMetaData[F]] =
36+
isClosed().ifM(
37+
ev.raiseError(???),
38+
(for
39+
statementClosed <- Ref[F].of[Boolean](false)
40+
resultSetClosed <- Ref[F].of[Boolean](false)
41+
yield DatabaseMetaDataImpl[F](
42+
statementClosed,
43+
resultSetClosed
44+
))
45+
)

0 commit comments

Comments
 (0)