summaryrefslogtreecommitdiff
path: root/test/files/pos/List1.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-01-15 12:14:03 +0000
committerMartin Odersky <odersky@gmail.com>2004-01-15 12:14:03 +0000
commitde408cadfb612d04e9adfe049a2bdf9f71da5bd5 (patch)
treed2b471cdfd6e97b00e79b1eb6d6ff19faae073a8 /test/files/pos/List1.scala
parent0362d6e25548f8f5c644af8eca34c6c7de47f246 (diff)
downloadscala-de408cadfb612d04e9adfe049a2bdf9f71da5bd5.tar.gz
scala-de408cadfb612d04e9adfe049a2bdf9f71da5bd5.tar.bz2
scala-de408cadfb612d04e9adfe049a2bdf9f71da5bd5.zip
*** empty log message ***
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..f0fce9501f
--- /dev/null
+++ b/test/files/pos/List1.scala
@@ -0,0 +1,45 @@
+object 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: Boolean = true;
+ def head = error("head of Nil");
+ def tail = error("tail of Nil");
+ }
+
+ def Cons[a](x: a, xs: List[a]): List[a] = new List[a] {
+ def isEmpty = 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] { def isEmpty: Boolean; 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);
+ ()
+ }
+}