aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/List1.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-12-19 15:21:34 +0100
committerMartin Odersky <odersky@gmail.com>2014-12-19 15:21:34 +0100
commit63c582b39ba8a248c9d6ad23db2224ea4a809a58 (patch)
treed953fd9c0b8b8e7c6f22158e27dff9db8944d745 /tests/pos/List1.scala
parent73d008317a6afaa0fea103ec0c84a39386f7d776 (diff)
downloaddotty-63c582b39ba8a248c9d6ad23db2224ea4a809a58.tar.gz
dotty-63c582b39ba8a248c9d6ad23db2224ea4a809a58.tar.bz2
dotty-63c582b39ba8a248c9d6ad23db2224ea4a809a58.zip
Test re-org.
Moved some working test to pos. I wonder why they were in pending? They did work for me.
Diffstat (limited to 'tests/pos/List1.scala')
-rw-r--r--tests/pos/List1.scala45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/pos/List1.scala b/tests/pos/List1.scala
new file mode 100644
index 000000000..30ebf5e1e
--- /dev/null
+++ b/tests/pos/List1.scala
@@ -0,0 +1,45 @@
+object lists {
+
+ abstract class List[a] {
+ def isEmpty: Boolean;
+ def head: a;
+ def tail: List[a];
+ def prepend(x: a) = Cons[a](x, this);
+ }
+
+ def Nil[b] = new List[b] {
+ def isEmpty: Boolean = true;
+ def head = sys.error("head of Nil");
+ def tail = sys.error("tail of Nil");
+ }
+
+ def Cons[c](x: c, xs: List[c]): List[c] = new List[c] {
+ 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);
+ ()
+ }
+}