aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-08-07 23:57:28 +0200
committerJason Zaugg <jzaugg@gmail.com>2013-08-07 23:57:28 +0200
commitb79c9ad864a27aea620254c3eade6d38adcf38f2 (patch)
treeb2667b421b7dde7ee8e196f616661baddd307579
parent021e7c4d0540c673166dbea0f0703da558e208f0 (diff)
downloadscala-async-b79c9ad864a27aea620254c3eade6d38adcf38f2.tar.gz
scala-async-b79c9ad864a27aea620254c3eade6d38adcf38f2.tar.bz2
scala-async-b79c9ad864a27aea620254c3eade6d38adcf38f2.zip
Don't set the body of If to the original type.
Tweak the way we set tpe = Unit in matches.
-rw-r--r--src/main/scala/scala/async/internal/AnfTransform.scala6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/main/scala/scala/async/internal/AnfTransform.scala b/src/main/scala/scala/async/internal/AnfTransform.scala
index 01693fd..6aeaba3 100644
--- a/src/main/scala/scala/async/internal/AnfTransform.scala
+++ b/src/main/scala/scala/async/internal/AnfTransform.scala
@@ -86,7 +86,7 @@ private[async] trait AnfTransform {
case Block(thenStats, thenExpr) => Block(thenStats, Assign(Ident(varDef.symbol), cast(thenExpr)))
case _ => Assign(Ident(varDef.symbol), cast(orig))
}
- }.setType(orig.tpe)
+ }
val ifWithAssign = treeCopy.If(tree, cond, branchWithAssign(thenp), branchWithAssign(elsep)).setType(definitions.UnitTpe)
stats :+ varDef :+ ifWithAssign :+ gen.mkAttributedStableRef(varDef.symbol).setType(tree.tpe).setPos(tree.pos)
}
@@ -104,10 +104,10 @@ private[async] trait AnfTransform {
val casesWithAssign = cases map {
case cd@CaseDef(pat, guard, body) =>
val newBody = body match {
- case b@Block(caseStats, caseExpr) => treeCopy.Block(b, caseStats, typedAssign(caseExpr))
+ case b@Block(caseStats, caseExpr) => treeCopy.Block(b, caseStats, typedAssign(caseExpr)).setType(definitions.UnitTpe)
case _ => typedAssign(body)
}
- treeCopy.CaseDef(cd, pat, guard, newBody.setType(definitions.UnitTpe)).setType(definitions.UnitTpe)
+ treeCopy.CaseDef(cd, pat, guard, newBody).setType(definitions.UnitTpe)
}
val matchWithAssign = treeCopy.Match(tree, scrut, casesWithAssign).setType(definitions.UnitTpe)
require(matchWithAssign.tpe != null, matchWithAssign)