aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/run/match0/Match0.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-11-25 09:52:02 +0100
committerJason Zaugg <jzaugg@gmail.com>2012-11-26 16:08:48 +0100
commita5cab2959067bc7f9d3884064fbf7bf7ec0b7285 (patch)
tree5acbcb90963da8e8528f1df299615ac6129fc4a6 /src/test/scala/scala/async/run/match0/Match0.scala
parentf039ac8d61cc5ac43c7ea3683f60fe0a5ad15479 (diff)
downloadscala-async-a5cab2959067bc7f9d3884064fbf7bf7ec0b7285.tar.gz
scala-async-a5cab2959067bc7f9d3884064fbf7bf7ec0b7285.tar.bz2
scala-async-a5cab2959067bc7f9d3884064fbf7bf7ec0b7285.zip
Extract vals for all names bound in a pattern.
These gives us something to lift to vars to be accessed from multiple states of the state machine. Fixes #35
Diffstat (limited to 'src/test/scala/scala/async/run/match0/Match0.scala')
-rw-r--r--src/test/scala/scala/async/run/match0/Match0.scala31
1 files changed, 31 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..5237629 100644
--- a/src/test/scala/scala/async/run/match0/Match0.scala
+++ b/src/test/scala/scala/async/run/match0/Match0.scala
@@ -69,4 +69,35 @@ 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))
+ }
}