aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/Async.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-12-10 11:44:39 +0100
committerJason Zaugg <jzaugg@gmail.com>2012-12-10 11:44:39 +0100
commit8b7e520b7d66abe14560508a24fe88d99fbedd9e (patch)
tree0b3bc74cbe02c6603d845c81fae53e4f69815eaf /src/main/scala/scala/async/Async.scala
parent7c93a9e0e288b55027646016913c7368732d54e4 (diff)
downloadscala-async-8b7e520b7d66abe14560508a24fe88d99fbedd9e.tar.gz
scala-async-8b7e520b7d66abe14560508a24fe88d99fbedd9e.tar.bz2
scala-async-8b7e520b7d66abe14560508a24fe88d99fbedd9e.zip
Workaround non-idempotency of typing pattern matching anonymous functions.
- Undo the transformation that takes place in Typers to leave us with Match(EmptyTree, cases). - Make sure we don't descend into the cases of such a tree when peforming the async transform
Diffstat (limited to 'src/main/scala/scala/async/Async.scala')
-rw-r--r--src/main/scala/scala/async/Async.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/main/scala/scala/async/Async.scala b/src/main/scala/scala/async/Async.scala
index 1961e69..2ff0f07 100644
--- a/src/main/scala/scala/async/Async.scala
+++ b/src/main/scala/scala/async/Async.scala
@@ -78,7 +78,8 @@ abstract class AsyncBase {
// - if/match only used in statement position.
val anfTree: Block = {
val anf = AnfTransform[c.type](c)
- val stats1 :+ expr1 = anf(body.tree)
+ val restored = utils.restorePatternMatchingFunctions(body.tree)
+ val stats1 :+ expr1 = anf(restored)
val block = Block(stats1, expr1)
c.typeCheck(block).asInstanceOf[Block]
}