diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-19 15:21:34 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-19 15:21:34 +0100 |
commit | 63c582b39ba8a248c9d6ad23db2224ea4a809a58 (patch) | |
tree | d953fd9c0b8b8e7c6f22158e27dff9db8944d745 /tests/pos/List1.scala | |
parent | 73d008317a6afaa0fea103ec0c84a39386f7d776 (diff) | |
download | dotty-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.scala | 45 |
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); + () + } +} |