Skip to content

Commit aeba1ba

Browse files
committed
Add test
1 parent 9c13681 commit aeba1ba

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

tests/run/fragables-extension.scala

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
trait Frag
2+
3+
case class IntFrag(x: Int) extends Frag
4+
case class StringFrag(x: String) extends Frag
5+
6+
trait Fragable[T]:
7+
extension (x: T)
8+
def toFrags: List[Frag]
9+
10+
given Fragable[Int] =
11+
x => List(IntFrag(x))
12+
given Fragable[String] =
13+
x => List(StringFrag(x))
14+
given [A: Fragable] as Fragable[List[A]] =
15+
x => x.flatMap(_.toFrags)
16+
given Fragable[EmptyTuple] =
17+
x => Nil
18+
given [A: Fragable, B <: Tuple: Fragable] as Fragable[A *: B] =
19+
x => x.head.toFrags ++ x.tail.toFrags
20+
21+
def f[T: Fragable](x: T) =
22+
println(s"got: ${x.toFrags.mkString(", ")}")
23+
24+
@main def Test =
25+
f(1)
26+
f("abc")
27+
f(List(1, 2, 3))
28+
f(1, "a", List("c", "d"))

0 commit comments

Comments
 (0)