aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/TreeInterrogation.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-11-25 11:51:34 +0100
committerJason Zaugg <jzaugg@gmail.com>2012-11-26 16:13:42 +0100
commit26038aebf1555b582dba35e8bfc3698f126705c5 (patch)
tree89517670afcf4ff41648bddecf41603661a111dc /src/test/scala/scala/async/TreeInterrogation.scala
parenta5cab2959067bc7f9d3884064fbf7bf7ec0b7285 (diff)
downloadscala-async-26038aebf1555b582dba35e8bfc3698f126705c5.tar.gz
scala-async-26038aebf1555b582dba35e8bfc3698f126705c5.tar.bz2
scala-async-26038aebf1555b582dba35e8bfc3698f126705c5.zip
Fix await in if condition / match scrutinee.
The type-checking performed in ANF transform is precarious, and needed to use the original condition/ scrutinee in a throwaway tree to get things to work.
Diffstat (limited to 'src/test/scala/scala/async/TreeInterrogation.scala')
-rw-r--r--src/test/scala/scala/async/TreeInterrogation.scala44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/test/scala/scala/async/TreeInterrogation.scala b/src/test/scala/scala/async/TreeInterrogation.scala
index f005b8a..e3012c7 100644
--- a/src/test/scala/scala/async/TreeInterrogation.scala
+++ b/src/test/scala/scala/async/TreeInterrogation.scala
@@ -41,26 +41,28 @@ class TreeInterrogation {
}
object TreeInterrogation extends App {
- sys.props("scala.async.debug") = true.toString
- sys.props("scala.async.trace") = true.toString
+ def withDebug[T](t: => T) {
+ AsyncUtils.trace = true
+ AsyncUtils.verbose = true
+ try t
+ finally {
+ AsyncUtils.trace = false
+ AsyncUtils.verbose = false
+ }
+ }
- val cm = reflect.runtime.currentMirror
- val tb = mkToolbox("-cp target/scala-2.10/classes -Xprint:all")
- val tree = tb.parse(
- """ import _root_.scala.async.AsyncId._
- | async {
- | val x = 1
- | Option(x) match {
- | case op @ Some(x) =>
- | assert(op != null)
- | println((op, x))
- | x + await(x)
- | case None => await(0)
- | }
- | }
- | """.stripMargin)
- println(tree)
- val tree1 = tb.typeCheck(tree.duplicate)
- println(cm.universe.show(tree1))
- println(tb.eval(tree))
+ withDebug {
+ val cm = reflect.runtime.currentMirror
+ val tb = mkToolbox("-cp target/scala-2.10/classes -Xprint:all")
+ val tree = tb.parse(
+ """ import _root_.scala.async.AsyncId._
+ | async {
+ | await(0) match { case _ => 0 }
+ | }
+ | """.stripMargin)
+ println(tree)
+ val tree1 = tb.typeCheck(tree.duplicate)
+ println(cm.universe.show(tree1))
+ println(tb.eval(tree))
+ }
} \ No newline at end of file