Skip to content

Commit d3b2c37

Browse files
committed
New test case
1 parent a5345a3 commit d3b2c37

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

tests/pos/enum-List-control.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
abstract sealed class List[T] extends Enum
2+
object List {
3+
final case class Cons[T](x: T, xs: List[T]) extends List[T] {
4+
def enumTag = 0
5+
}
6+
final case class Nil[T]() extends List[T] {
7+
def enumTag = 1
8+
}
9+
}
10+
object Test {
11+
import List._
12+
val xs = Cons(1, Cons(2, Cons(3, Nil())))
13+
def main(args: Array[String]) = println(xs)
14+
}

tests/run/enum-Tree.check

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
If(IsZero(Pred(Succ(Zero))),Succ(Succ(Zero)),Pred(Pred(Zero))) --> 2

tests/run/enum-Tree.scala

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
enum Tree[T] {
2+
case True extends Tree[Boolean]
3+
case False extends Tree[Boolean]
4+
case Zero extends Tree[Int]
5+
case Succ(n: Tree[Int]) extends Tree[Int]
6+
case Pred(n: Tree[Int]) extends Tree[Int]
7+
case IsZero(n: Tree[Int]) extends Tree[Boolean]
8+
case If(cond: Tree[Boolean], thenp: Tree[T], elsep: Tree[T])
9+
}
10+
11+
object Test {
12+
import Tree._
13+
14+
def eval[T](e: Tree[T]): T = e match {
15+
case True => true
16+
case False => false
17+
case Zero => 0
18+
case Succ(f) => eval(f) + 1
19+
case Pred(f) => eval(f) - 1
20+
case IsZero(f) => eval(f) == 0
21+
case If(cond, thenp, elsep) => if (eval(cond)) eval(thenp) else eval(elsep)
22+
}
23+
24+
val data = If(IsZero(Pred(Succ(Zero))), Succ(Succ(Zero)), Pred(Pred(Zero)))
25+
26+
def main(args: Array[String]) = {
27+
println(s"$data --> ${eval(data)}")
28+
}
29+
}

0 commit comments

Comments
 (0)