diff options
author | Martin Odersky <odersky@gmail.com> | 2006-03-09 12:12:37 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-03-09 12:12:37 +0000 |
commit | 083f4dd55a5377e740e7581ff2dcdfafe3ae9f76 (patch) | |
tree | c884b7102026544b305676b5c08ba91d45ad5b56 /test | |
parent | ca9017c139803bfd56b62b5e08e8832dcce88745 (diff) | |
download | scala-083f4dd55a5377e740e7581ff2dcdfafe3ae9f76.tar.gz scala-083f4dd55a5377e740e7581ff2dcdfafe3ae9f76.tar.bz2 scala-083f4dd55a5377e740e7581ff2dcdfafe3ae9f76.zip |
fix arrays some more.
Diffstat (limited to 'test')
-rwxr-xr-x | test/files/run/gadts.scala | 19 | ||||
-rw-r--r-- | test/files/run/overloads.scala | 4 |
2 files changed, 21 insertions, 2 deletions
diff --git a/test/files/run/gadts.scala b/test/files/run/gadts.scala new file mode 100755 index 0000000000..36d6fc9530 --- /dev/null +++ b/test/files/run/gadts.scala @@ -0,0 +1,19 @@ +abstract class Term[T]; +case class Lit(x: int) extends Term[int]; +case class Succ(t: Term[int]) extends Term[int]; +case class IsZero(t: Term[int]) extends Term[boolean]; +case class If[T](c: Term[boolean], + t1: Term[T], + t2: Term[T]) extends Term[T]; + +object Test extends Application { + def eval[T](t: Term[T]): T = t match { + case Lit(n) => n + case Succ(u) => eval(u) + 1 + case IsZero(u) => eval(u) == 0 + case If(c, u1, u2) => eval(if (eval(c)) u1 else u2) + } + Console.println( + eval(If(IsZero(Lit(1)), Lit(41), Succ(Lit(41))))) +} + diff --git a/test/files/run/overloads.scala b/test/files/run/overloads.scala index 31664b2ea6..882f510a3d 100644 --- a/test/files/run/overloads.scala +++ b/test/files/run/overloads.scala @@ -24,11 +24,11 @@ object Funcs { object M1 { def f[A](x: A) = 11; - def f[A <: Ordered[A]](x: A) = 12; + def f[A <: Ordered[A]](x: Ordered[A]) = 12; } object M2 { - def f[A <: Ordered[A]](x: A) = 21; + def f[A <: Ordered[A]](x: Ordered[A]) = 21; def f[A](x: A) = 22; } |