diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-07-24 21:59:15 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-07-24 21:59:15 +1000 |
commit | 1d34046589537dc7866f24142971714c665ee320 (patch) | |
tree | f25742269ca12ed823378e1c13f6db11b0ce7db7 | |
parent | 3bdb1d69a5c24443726ec7e610fef18ba7d34297 (diff) | |
download | scala-async-1d34046589537dc7866f24142971714c665ee320.tar.gz scala-async-1d34046589537dc7866f24142971714c665ee320.tar.bz2 scala-async-1d34046589537dc7866f24142971714c665ee320.zip |
Support await in Typed nodes.
-rw-r--r-- | src/main/scala/scala/async/internal/AnfTransform.scala | 4 | ||||
-rw-r--r-- | src/test/scala/scala/async/run/anf/AnfTransformSpec.scala | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/main/scala/scala/async/internal/AnfTransform.scala b/src/main/scala/scala/async/internal/AnfTransform.scala index 7b30590..6434315 100644 --- a/src/main/scala/scala/async/internal/AnfTransform.scala +++ b/src/main/scala/scala/async/internal/AnfTransform.scala @@ -168,6 +168,10 @@ private[async] trait AnfTransform { val stats :+ expr1 = linearize.transformToList(expr) stats :+ treeCopy.Throw(tree, expr1) + case Typed(expr, tpt) => + val stats :+ expr1 = linearize.transformToList(expr) + stats :+ treeCopy.Typed(tree, expr1, tpt) + case treeInfo.Applied(fun, targs, argss) if argss.nonEmpty => // we an assume that no await call appears in a by-name argument position, // this has already been checked. diff --git a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala index ed9f506..2414ad3 100644 --- a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala +++ b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala @@ -358,4 +358,12 @@ class AnfTransformSpec { } ).getMessage mustBe "msg: 0" } + + @Test + def awaitInTyped() { + import _root_.scala.async.internal.AsyncId.{async, await} + async { + (("msg: " + await(0)): String).toString + } mustBe "msg: 0" + } } |