diff options
author | Martin Odersky <odersky@gmail.com> | 2015-12-20 22:00:29 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-12-20 22:00:45 +0100 |
commit | e51b8845fb20fe3a4e1c655d4b72e2833906bbc2 (patch) | |
tree | 91bc16867d7a709566d8be80902b3256294cf338 /tests/pos/t573.scala | |
parent | 581fee04f808d6f7759f98358e7475e6a58138e3 (diff) | |
download | dotty-e51b8845fb20fe3a4e1c655d4b72e2833906bbc2.tar.gz dotty-e51b8845fb20fe3a4e1c655d4b72e2833906bbc2.tar.bz2 dotty-e51b8845fb20fe3a4e1c655d4b72e2833906bbc2.zip |
The big pending/pos test triage
Diffstat (limited to 'tests/pos/t573.scala')
-rw-r--r-- | tests/pos/t573.scala | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/pos/t573.scala b/tests/pos/t573.scala new file mode 100644 index 000000000..1aadb446c --- /dev/null +++ b/tests/pos/t573.scala @@ -0,0 +1,43 @@ +package lampion.collections; + +object DirX { + abstract class Dir { + def reverse : Dir; + } + object BEFORE extends Dir { + def reverse = AFTER; + } + object AFTER extends Dir { + def reverse = BEFORE; + } +} + +import DirX._; + +abstract class Linked { + type Node <: Node0; + + abstract class Node0 { + self: Node => + + var next : Node = _; + var prev : Node = _; + + def get(dir : Dir) = if (dir == BEFORE) prev; else next; + private def set(dir : Dir, node : Node) = + if (dir == BEFORE) prev = node; else next = node; + + def link(dir : Dir, node : Node) = { + assert(get(dir) == null); + assert(node.get(dir.reverse) == null); + set(dir, node); + node.set(dir.reverse, self); + } + + + def end(dir : Dir) : Node = { + if (get(dir) == null) this; + else get(dir).end(dir); + } + } +} |