summaryrefslogtreecommitdiff
path: root/test/files/pos/List1.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-02-14 14:39:24 +0000
committerMartin Odersky <odersky@gmail.com>2003-02-14 14:39:24 +0000
commit21b147f7caf8b558b00044f493cf9da392c7e30e (patch)
treea964142a10a16e7c9a64b03e44fdde1d9f1b63be /test/files/pos/List1.scala
parentfd3f10df3cd88fe3b970f8312a479ae63f0803b8 (diff)
downloadscala-21b147f7caf8b558b00044f493cf9da392c7e30e.tar.gz
scala-21b147f7caf8b558b00044f493cf9da392c7e30e.tar.bz2
scala-21b147f7caf8b558b00044f493cf9da392c7e30e.zip
Initial version.
Diffstat (limited to 'test/files/pos/List1.scala')
-rw-r--r--test/files/pos/List1.scala45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/files/pos/List1.scala b/test/files/pos/List1.scala
new file mode 100644
index 0000000000..60c23634bf
--- /dev/null
+++ b/test/files/pos/List1.scala
@@ -0,0 +1,45 @@
+module lists {
+
+ trait List[a] {
+ def isEmpty: Boolean;
+ def head: a;
+ def tail: List[a];
+ def prepend(x: a) = Cons@[a](x, this);
+ }
+
+ def Nil[a] = new List[a] {
+ def isEmpty = True;
+ def head = error@[a]("head of Nil");
+ def tail = error@[List[a]]("tail of Nil");
+ }
+
+ def Cons[a](x: a, xs: List[a]): List[a] = new List[a] {
+ def isEmpty = Boolean.False;
+ def head = x;
+ def tail = xs;
+ }
+
+ def foo = {
+ val intnil = Nil@[Int];
+ val intlist = intnil.prepend(1).prepend(1+1);
+ val x: Int = intlist.head;
+ val strnil = Nil@[String];
+ val strlist = strnil.prepend("A").prepend("AA");
+ val y: String = strlist.head;
+ ()
+ }
+
+ class IntList() extends List[Int] {
+ def isEmpty: Boolean = False;
+ def head: Int = 1;
+ def foo: List[Int] with { def isEmpty: True.type; def head: Int; def tail: List[Int] } = Nil@[Int];
+ def tail0: List[Int] = foo.prepend(1).prepend(1+1);
+ def tail: List[Int] = Nil@[Int].prepend(1).prepend(1+1);
+ }
+
+ def foo2 = {
+ val il1 = new IntList();
+ val il2 = il1.prepend(1).prepend(2);
+ ()
+ }
+} \ No newline at end of file