diff options
author | Martin Odersky <odersky@gmail.com> | 2003-02-14 14:39:24 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-02-14 14:39:24 +0000 |
commit | 21b147f7caf8b558b00044f493cf9da392c7e30e (patch) | |
tree | a964142a10a16e7c9a64b03e44fdde1d9f1b63be /test/files/pos/List1.scala | |
parent | fd3f10df3cd88fe3b970f8312a479ae63f0803b8 (diff) | |
download | scala-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.scala | 45 |
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 |