diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-11-25 09:52:02 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-11-26 16:08:48 +0100 |
commit | a5cab2959067bc7f9d3884064fbf7bf7ec0b7285 (patch) | |
tree | 5acbcb90963da8e8528f1df299615ac6129fc4a6 /src/test/scala/scala/async/run/match0 | |
parent | f039ac8d61cc5ac43c7ea3683f60fe0a5ad15479 (diff) | |
download | scala-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')
-rw-r--r-- | src/test/scala/scala/async/run/match0/Match0.scala | 31 |
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)) + } } |