aboutsummaryrefslogtreecommitdiff
path: root/tests/patmat/enum-HList.scala
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2017-04-10 10:33:32 +0200
committerGitHub <noreply@github.com>2017-04-10 10:33:32 +0200
commit318700fdaacd7e6707519e03f15a5ede99ca558a (patch)
tree809f66b68f9200afd8daef9172921405469a39c7 /tests/patmat/enum-HList.scala
parent80f9b6da66cb4eeabfd5ab97e422752ff134d590 (diff)
parent2bf1e1913feb36d90d1c4e857c6cd9610d80ff61 (diff)
downloaddotty-318700fdaacd7e6707519e03f15a5ede99ca558a.tar.gz
dotty-318700fdaacd7e6707519e03f15a5ede99ca558a.tar.bz2
dotty-318700fdaacd7e6707519e03f15a5ede99ca558a.zip
Merge pull request #2197 from dotty-staging/add-enum-exhaustiveness
Add enum exhaustivity checking
Diffstat (limited to 'tests/patmat/enum-HList.scala')
-rw-r--r--tests/patmat/enum-HList.scala22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/patmat/enum-HList.scala b/tests/patmat/enum-HList.scala
new file mode 100644
index 000000000..c019cb6cc
--- /dev/null
+++ b/tests/patmat/enum-HList.scala
@@ -0,0 +1,22 @@
+enum HLst {
+ case HCons[+Hd, +Tl <: HLst](hd: Hd, tl: Tl)
+ case HNil
+}
+
+object Test {
+ import HLst._
+ def length(hl: HLst): Int = hl match {
+ case HCons(_, tl) => 1 + length(tl)
+ case HNil => 0
+ }
+ def sumInts(hl: HLst): Int = hl match {
+ case HCons(x: Int, tl) => x + sumInts(tl)
+ case HCons(_, tl) => sumInts(tl)
+ case HNil => 0
+ }
+ def main(args: Array[String]) = {
+ val hl = HCons(1, HCons("A", HNil))
+ assert(length(hl) == 2, length(hl))
+ assert(sumInts(hl) == 1)
+ }
+}