aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/scala/async/TreeInterrogation.scala44
-rw-r--r--src/test/scala/scala/async/neg/NakedAwait.scala11
-rw-r--r--src/test/scala/scala/async/run/ifelse0/IfElse0.scala8
-rw-r--r--src/test/scala/scala/async/run/match0/Match0.scala12
4 files changed, 43 insertions, 32 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
diff --git a/src/test/scala/scala/async/neg/NakedAwait.scala b/src/test/scala/scala/async/neg/NakedAwait.scala
index f4cfca2..ecc84f9 100644
--- a/src/test/scala/scala/async/neg/NakedAwait.scala
+++ b/src/test/scala/scala/async/neg/NakedAwait.scala
@@ -143,15 +143,4 @@ class NakedAwait {
|""".stripMargin
}
}
-
- // TODO Anf transform if to have a simple condition.
- @Test
- def ifCondition() {
- expectError("await must not be used under a condition.") {
- """
- | import _root_.scala.async.AsyncId._
- | async { if (await(true)) () }
- |""".stripMargin
- }
- }
}
diff --git a/src/test/scala/scala/async/run/ifelse0/IfElse0.scala b/src/test/scala/scala/async/run/ifelse0/IfElse0.scala
index 0a72f1e..e2b1ca6 100644
--- a/src/test/scala/scala/async/run/ifelse0/IfElse0.scala
+++ b/src/test/scala/scala/async/run/ifelse0/IfElse0.scala
@@ -47,4 +47,12 @@ class IfElseSpec {
val res = Await.result(fut, 2 seconds)
res mustBe (14)
}
+
+ @Test def `await in condition`() {
+ import AsyncId.{async, await}
+ val result = async {
+ if ({await(true); await(true)}) await(1) else ???
+ }
+ result mustBe (1)
+ }
}
diff --git a/src/test/scala/scala/async/run/match0/Match0.scala b/src/test/scala/scala/async/run/match0/Match0.scala
index 5237629..8263e72 100644
--- a/src/test/scala/scala/async/run/match0/Match0.scala
+++ b/src/test/scala/scala/async/run/match0/Match0.scala
@@ -100,4 +100,16 @@ class MatchSpec {
}
result mustBe ((Some(""), true))
}
+
+ @Test def `await in scrutinee`() {
+ import AsyncId.{async, await}
+ val result = async {
+ await(if ("".isEmpty) await(1) else ???) match {
+ case x if x < 0 => ???
+ case y: Int => y * await(3)
+ case _ => ???
+ }
+ }
+ result mustBe (3)
+ }
}