summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-03-09 12:12:37 +0000
committerMartin Odersky <odersky@gmail.com>2006-03-09 12:12:37 +0000
commit083f4dd55a5377e740e7581ff2dcdfafe3ae9f76 (patch)
treec884b7102026544b305676b5c08ba91d45ad5b56 /test
parentca9017c139803bfd56b62b5e08e8832dcce88745 (diff)
downloadscala-083f4dd55a5377e740e7581ff2dcdfafe3ae9f76.tar.gz
scala-083f4dd55a5377e740e7581ff2dcdfafe3ae9f76.tar.bz2
scala-083f4dd55a5377e740e7581ff2dcdfafe3ae9f76.zip
fix arrays some more.
Diffstat (limited to 'test')
-rwxr-xr-xtest/files/run/gadts.scala19
-rw-r--r--test/files/run/overloads.scala4
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;
}