aboutsummaryrefslogtreecommitdiff
path: root/tests/disabled
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-12-19 15:21:34 +0100
committerMartin Odersky <odersky@gmail.com>2014-12-19 15:21:34 +0100
commit63c582b39ba8a248c9d6ad23db2224ea4a809a58 (patch)
treed953fd9c0b8b8e7c6f22158e27dff9db8944d745 /tests/disabled
parent73d008317a6afaa0fea103ec0c84a39386f7d776 (diff)
downloaddotty-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/disabled')
-rw-r--r--tests/disabled/not-representable/CustomGlobal.scala33
-rw-r--r--tests/disabled/not-representable/MailBox.scala84
2 files changed, 117 insertions, 0 deletions
diff --git a/tests/disabled/not-representable/CustomGlobal.scala b/tests/disabled/not-representable/CustomGlobal.scala
new file mode 100644
index 000000000..a5668bd7c
--- /dev/null
+++ b/tests/disabled/not-representable/CustomGlobal.scala
@@ -0,0 +1,33 @@
+package custom
+
+import scala.tools.nsc._, reporters._, typechecker._
+
+/** Demonstration of a custom Global with a custom Typer,
+ * decoupled from trunk. Demonstration:
+ *
+{{{
+scalac -d . CustomGlobal.scala && scala -nc -Yglobal-class custom.CustomGlobal \
+ -e 'class Bippy(x: Int) ; def f = new Bippy(5)'
+
+I'm typing a Bippy! It's a ClassDef.
+I'm typing a Bippy! It's a Ident.
+I'm typing a Bippy! It's a DefDef.
+}}}
+ *
+ */
+class CustomGlobal(currentSettings: Settings, reporter: Reporter) extends Global(currentSettings, reporter) {
+ override lazy val analyzer = new {
+ val global: CustomGlobal.this.type = CustomGlobal.this
+ } with Analyzer {
+ override def newTyper(context: Context): Typer = new CustomTyper(context)
+
+ class CustomTyper(context : Context) extends Typer(context) {
+ override def typed(tree: Tree, mode: Mode, pt: Type): Tree = {
+ if (tree.summaryString contains "Bippy")
+ println("I'm typing a Bippy! It's a " + tree.shortClass + ".")
+
+ super.typed(tree, mode, pt)
+ }
+ }
+ }
+}
diff --git a/tests/disabled/not-representable/MailBox.scala b/tests/disabled/not-representable/MailBox.scala
new file mode 100644
index 000000000..8e27bd362
--- /dev/null
+++ b/tests/disabled/not-representable/MailBox.scala
@@ -0,0 +1,84 @@
+package test;
+
+import scala.actors.TIMEOUT;
+
+class MailBox {
+
+ private class LinkedList[a] {
+ var elem: a = _;
+ var next: LinkedList[a] = null;
+ }
+
+ private def insert[a](l: LinkedList[a], x: a): LinkedList[a] = {
+ l.next = new LinkedList[a];
+ l.next.elem = x;
+ l.next.next = l.next;
+ l
+ }
+
+ private abstract class Receiver {
+ def isDefined(msg: Any): Boolean;
+ var msg: Any = null;
+ }
+
+ private val sent = new LinkedList[Any];
+ private var lastSent = sent;
+ private val receivers = new LinkedList[Receiver];
+ private var lastReceiver = receivers;
+
+ def send(msg: Any): Unit = synchronized {
+ var r = receivers;
+ var r1 = r.next;
+ while (r1 != null && !r1.elem.isDefined(msg)) {
+ r = r1; r1 = r1.next;
+ }
+ if (r1 != null) {
+ r.next = r1.next; r1.elem.msg = msg; r1.elem.notify();
+ } else {
+ lastSent = insert(lastSent, msg);
+ }
+ }
+
+ def receive[a](f: PartialFunction[Any, a]): a = {
+ val msg: Any = synchronized {
+ var s = sent;
+ var s1 = s.next;
+ while (s1 != null && !f.isDefinedAt(s1.elem)) {
+ s = s1; s1 = s1.next
+ }
+ if (s1 != null) {
+ s.next = s1.next; s1.elem
+ } else {
+ val r = insert(lastReceiver, new Receiver {
+ def isDefined(msg: Any) = f.isDefinedAt(msg);
+ });
+ lastReceiver = r;
+ r.elem.wait();
+ r.elem.msg
+ }
+ }
+ f(msg)
+ }
+
+ def receiveWithin[a](msec: Long)(f: PartialFunction[Any, a]): a = {
+ val msg: Any = synchronized {
+ var s = sent;
+ var s1 = s.next;
+ while (s1 != null && !f.isDefinedAt(s1.elem)) {
+ s = s1; s1 = s1.next ;
+ }
+ if (s1 != null) {
+ s.next = s1.next; s1.elem
+ } else {
+ val r = insert(lastReceiver, new Receiver {
+ def isDefined(msg: Any) = f.isDefinedAt(msg);
+ });
+ lastReceiver = r;
+ r.elem.wait(msec);
+ if (r.elem.msg == null) r.elem.msg = TIMEOUT;
+ r.elem.msg
+ }
+ }
+ f(msg)
+ }
+}