diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-05-12 18:30:53 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-05-12 18:30:53 +0200 |
commit | 89bacb9c25a58454ff1878e67f7ea07ffc8c269f (patch) | |
tree | 51f1ff6c66aebe1b6109b1cffcc2bb8e4cf760a3 /tests/pending/run/absoverride.scala | |
parent | a0fa33deafbea1bf53edc068c5ed9db5592822f9 (diff) | |
download | dotty-89bacb9c25a58454ff1878e67f7ea07ffc8c269f.tar.gz dotty-89bacb9c25a58454ff1878e67f7ea07ffc8c269f.tar.bz2 dotty-89bacb9c25a58454ff1878e67f7ea07ffc8c269f.zip |
Run tests as they were in scala.
Diffstat (limited to 'tests/pending/run/absoverride.scala')
-rw-r--r-- | tests/pending/run/absoverride.scala | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/pending/run/absoverride.scala b/tests/pending/run/absoverride.scala new file mode 100644 index 000000000..a3c03df0d --- /dev/null +++ b/tests/pending/run/absoverride.scala @@ -0,0 +1,41 @@ +abstract class AbsIterator { + type T + def hasNext: Boolean + def next: T +} + +trait RichIterator extends AbsIterator { + def foreach(f: T => Unit) { + while (hasNext) f(next) + } +} + +class StringIterator(s: String) extends AbsIterator { + type T = Char + private var i = 0 + def hasNext = i < s.length() + def next = { val x = s.charAt(i); i += 1; println("next: " + x); x } +} + +trait SyncIterator extends AbsIterator { + abstract override def hasNext: Boolean = + synchronized(super.hasNext) + abstract override def next: T = + synchronized { + println("<sync>"); val x = super.next; println("</sync>"); x + } +} +trait LoggedIterator extends AbsIterator { + abstract override def next: T = { + val x = super.next; println("log: " + x); x + } +} +class Iter2(s: String) extends StringIterator(s) + with SyncIterator with LoggedIterator; +object Test { + def main(args: Array[String]) { + class Iter extends StringIterator(args(0)) with RichIterator with SyncIterator with LoggedIterator + val iter = new Iter + iter foreach Console.println + } +} |