Skip to content

Commit 3107214

Browse files
authored
Merge pull request #10052 from griggt/fix-#8927
Fix #8927: Add regression test
2 parents a79145d + 5368157 commit 3107214

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

tests/pos/i8927.scala

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import scala.language.implicitConversions
2+
3+
trait Eq[k <: AnyKind, K[_ <: k]]:
4+
extension [A <: k, B <: k](k: K[A]) def isEq (k2: K[B]): Eq.GEQ[k, K, A, B]
5+
6+
object Eq:
7+
enum GEQ[k <: AnyKind, K[_ <: k], A <: k, B <: k]:
8+
case Y[k <: AnyKind, K[_ <: k], A <: k](res: K[A]) extends GEQ[k, K, A, A]
9+
case N()
10+
11+
sealed trait DPair[k <: AnyKind, K[_ <: k], +V[_ <: k]]:
12+
type A <: k
13+
val key: K[A]
14+
val value: V[A]
15+
final def extract[B <: k](k: K[B])(using Eq[k, K]): Option[V[B]] = key isEq k match
16+
case y: Eq.GEQ.Y[k, K, A] => Some(value)
17+
case _ => None
18+
19+
object DPair:
20+
given pair [k, K[_ <: k], V[_ <: k], C <: k] as Conversion[(K[C], V[C]), DPair[k, K, V]] = tup =>
21+
case class dpair(key: K[C], value: V[C]) extends DPair[k, K, V]:
22+
type A = C
23+
dpair(tup._1, tup._2)

0 commit comments

Comments
 (0)