diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-08-07 23:57:28 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-08-07 23:57:28 +0200 |
commit | b79c9ad864a27aea620254c3eade6d38adcf38f2 (patch) | |
tree | b2667b421b7dde7ee8e196f616661baddd307579 /src | |
parent | 021e7c4d0540c673166dbea0f0703da558e208f0 (diff) | |
download | scala-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.
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/scala/async/internal/AnfTransform.scala | 6 |
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) |