aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/Async.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scala/async/Async.scala')
-rw-r--r--src/main/scala/scala/async/Async.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/main/scala/scala/async/Async.scala b/src/main/scala/scala/async/Async.scala
index bd766f2..546445a 100644
--- a/src/main/scala/scala/async/Async.scala
+++ b/src/main/scala/scala/async/Async.scala
@@ -66,11 +66,14 @@ abstract class AsyncBase {
import Flag._
val builder = new ExprBuilder[c.type, futureSystem.type](c, self.futureSystem)
+ val anaylzer = new AsyncAnalysis[c.type](c)
import builder.defn._
import builder.name
import builder.futureSystemOps
+ anaylzer.reportUnsupportedAwaits(body.tree)
+
// Transform to A-normal form:
// - no await calls in qualifiers or arguments,
// - if/match only used in statement position.
@@ -84,9 +87,7 @@ abstract class AsyncBase {
// states of our generated state machine, e.g. a value assigned before
// an `await` and read afterwards.
val renameMap: Map[Symbol, TermName] = {
- val analyzer = new builder.AsyncAnalyzer
- analyzer.traverse(anfTree)
- analyzer.valDefsToLift.map {
+ anaylzer.valDefsUsedInSubsequentStates(anfTree).map {
vd =>
(vd.symbol, builder.name.fresh(vd.name))
}.toMap