aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/run/match0/Match0.scala
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2012-11-26 10:32:37 -0800
committerPhilipp Haller <hallerp@gmail.com>2012-11-26 10:32:37 -0800
commit54c97691f78dcd811cd5dad66d0b7d9406fb9ed6 (patch)
tree31fd1d999bd88275d1202c0ef7f7c8a7fa4f0928 /src/test/scala/scala/async/run/match0/Match0.scala
parent4518c96f9b54a1b7ca14d82b3ed31d7014a67f57 (diff)
parent6c3c0f0a37d337aa297f5b2481d4727ea2a20434 (diff)
downloadscala-async-54c97691f78dcd811cd5dad66d0b7d9406fb9ed6.tar.gz
scala-async-54c97691f78dcd811cd5dad66d0b7d9406fb9ed6.tar.bz2
scala-async-54c97691f78dcd811cd5dad66d0b7d9406fb9ed6.zip
Merge pull request #41 from phaller/ticket/35-synth-object-2
Ticket/35 synth object 2
Diffstat (limited to 'src/test/scala/scala/async/run/match0/Match0.scala')
-rw-r--r--src/test/scala/scala/async/run/match0/Match0.scala43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/test/scala/scala/async/run/match0/Match0.scala b/src/test/scala/scala/async/run/match0/Match0.scala
index f550a69..8263e72 100644
--- a/src/test/scala/scala/async/run/match0/Match0.scala
+++ b/src/test/scala/scala/async/run/match0/Match0.scala
@@ -69,4 +69,47 @@ class MatchSpec {
val res = Await.result(fut, 2 seconds)
res mustBe (5)
}
+
+ @Test def `support await in a match expression with binds`() {
+ val result = AsyncId.async {
+ val x = 1
+ Option(x) match {
+ case op @ Some(x) =>
+ assert(op == Some(1))
+ x + AsyncId.await(x)
+ case None => AsyncId.await(0)
+ }
+ }
+ result mustBe (2)
+ }
+
+ @Test def `support await referring to pattern matching vals`() {
+ import AsyncId.{async, await}
+ val result = async {
+ val x = 1
+ val opt = Some("")
+ await(0)
+ val o @ Some(y) = opt
+
+ {
+ val o @ Some(y) = Some(".")
+ }
+
+ await(0)
+ await((o, y.isEmpty))
+ }
+ 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)
+ }
}