From 8b7e520b7d66abe14560508a24fe88d99fbedd9e Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Mon, 10 Dec 2012 11:44:39 +0100 Subject: 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 --- src/main/scala/scala/async/Async.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main/scala/scala/async/Async.scala') 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] } -- cgit v1.2.3