Skip to content

Commit a5e4145

Browse files
committed
Add seed for helper lib example
1 parent 8cdc7cd commit a5e4145

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
Got name
22
Got age
33
Got city
4+
Guy

tests/run/runNamedPatternMatching.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,21 @@ object Test:
2020

2121
def unapply(user: User) = UserExtractor(user)
2222

23+
object Helper:
24+
val empty: EmptyTuple & { type Names = EmptyTuple } = EmptyTuple.asInstanceOf
25+
26+
extension [N <: Singleton & String, V] (head: (N, V))
27+
def +::[Vs <: Tuple, Ns <: Tuple](tail: Vs & { type Names = Ns }) : V *: Vs & { type Names = N *: Ns }=
28+
(head._2 *: tail).asInstanceOf
29+
30+
object UserEx2:
31+
import Helper._
32+
// TODO: The inferred type doesn't work and leads to a runtime exception
33+
def unapply(user: User): (String, Int, String) & { type Names = ("name", "age", "city") } =
34+
("name", user.name) +:: ("age", user.age) +:: ("city", user.city) +:: empty
35+
2336
def main(args: Array[String]): Unit =
2437
val UserEx(city = _, name = _) = User("Guy", 25, "Paris")
38+
val UserEx2(city = _, name = n) = User("Guy", 25, "Paris")
39+
40+
println(n)

0 commit comments

Comments
 (0)