aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/scala/async/internal/AnfTransform.scala2
-rw-r--r--src/test/scala/scala/async/run/anf/AnfTransformSpec.scala14
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/scala/scala/async/internal/AnfTransform.scala b/src/main/scala/scala/async/internal/AnfTransform.scala
index d98aaa3..13218f3 100644
--- a/src/main/scala/scala/async/internal/AnfTransform.scala
+++ b/src/main/scala/scala/async/internal/AnfTransform.scala
@@ -107,7 +107,7 @@ private[async] trait AnfTransform {
case b@Block(caseStats, caseExpr) => treeCopy.Block(b, caseStats, typedAssign(caseExpr))
case _ => typedAssign(body)
}
- treeCopy.CaseDef(cd, pat, guard, newBody).setType(definitions.UnitTpe)
+ treeCopy.CaseDef(cd, pat, guard, newBody.setType(definitions.UnitTpe)).setType(definitions.UnitTpe)
}
val matchWithAssign = treeCopy.Match(tree, scrut, casesWithAssign).setType(definitions.UnitTpe)
require(matchWithAssign.tpe != null, matchWithAssign)
diff --git a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala
index 595ed63..c8cec28 100644
--- a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala
+++ b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala
@@ -379,6 +379,20 @@ class AnfTransformSpec {
}
@Test
+ def caseBodyMustBeTypedAsUnit() {
+ import _root_.scala.async.internal.AsyncId.{async, await}
+ val Up = 1
+ val Down = 2
+ val sign = async {
+ await(1) match {
+ case Up => 1.0
+ case Down => -1.0
+ }
+ }
+ sign mustBe 1.0
+ }
+
+ @Test
def awaitInImplicitApply() {
val tb = mkToolbox(s"-cp ${toolboxClasspath}")
val tree = tb.typeCheck(tb.parse {