aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-07-24 21:59:15 +1000
committerJason Zaugg <jzaugg@gmail.com>2013-07-24 21:59:15 +1000
commit1d34046589537dc7866f24142971714c665ee320 (patch)
treef25742269ca12ed823378e1c13f6db11b0ce7db7
parent3bdb1d69a5c24443726ec7e610fef18ba7d34297 (diff)
downloadscala-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.scala4
-rw-r--r--src/test/scala/scala/async/run/anf/AnfTransformSpec.scala8
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"
+ }
}