aboutsummaryrefslogtreecommitdiff
path: root/tests/pending/run/absoverride.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-05-12 18:30:53 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-05-12 18:30:53 +0200
commit89bacb9c25a58454ff1878e67f7ea07ffc8c269f (patch)
tree51f1ff6c66aebe1b6109b1cffcc2bb8e4cf760a3 /tests/pending/run/absoverride.scala
parenta0fa33deafbea1bf53edc068c5ed9db5592822f9 (diff)
downloaddotty-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.scala41
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
+ }
+}