aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/internal/AsyncMacro.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2015-09-24 10:28:07 +1000
committerJason Zaugg <jzaugg@gmail.com>2015-09-24 10:28:07 +1000
commit7263aaad02a75978a0a48f90bf171c66cda4328c (patch)
treef3e876db8c7b7b4d5d7311dc7e9b3742057cf233 /src/main/scala/scala/async/internal/AsyncMacro.scala
parent93f207fee780652d08f93e1ea40e018db59fee99 (diff)
parent168e10cd8b60789aa3c9c96aeb5d5522c3ec6922 (diff)
downloadscala-async-0.9.6-RC1_2.11.tar.gz
scala-async-0.9.6-RC1_2.11.tar.bz2
scala-async-0.9.6-RC1_2.11.zip
Merge pull request #141 from retronym/ticket/await-extractorv0.9.6-RC1_2.11v0.9.5-RC1_2.11
Enable a compiler plugin to use the async transform after patmat
Diffstat (limited to 'src/main/scala/scala/async/internal/AsyncMacro.scala')
-rw-r--r--src/main/scala/scala/async/internal/AsyncMacro.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/main/scala/scala/async/internal/AsyncMacro.scala b/src/main/scala/scala/async/internal/AsyncMacro.scala
index e969f9b..e22407d 100644
--- a/src/main/scala/scala/async/internal/AsyncMacro.scala
+++ b/src/main/scala/scala/async/internal/AsyncMacro.scala
@@ -1,15 +1,17 @@
package scala.async.internal
object AsyncMacro {
- def apply(c0: reflect.macros.Context, base: AsyncBase): AsyncMacro { val c: c0.type } = {
+ def apply(c0: reflect.macros.Context, base: AsyncBase)(body0: c0.Tree): AsyncMacro { val c: c0.type } = {
import language.reflectiveCalls
new AsyncMacro { self =>
val c: c0.type = c0
+ val body: c.Tree = body0
// This member is required by `AsyncTransform`:
val asyncBase: AsyncBase = base
// These members are required by `ExprBuilder`:
val futureSystem: FutureSystem = base.futureSystem
val futureSystemOps: futureSystem.Ops {val c: self.c.type} = futureSystem.mkOps(c)
+ val containsAwait: c.Tree => Boolean = containsAwaitCached(body0)
}
}
}
@@ -19,7 +21,10 @@ private[async] trait AsyncMacro
with ExprBuilder with AsyncTransform with AsyncAnalysis with LiveVariables {
val c: scala.reflect.macros.Context
+ val body: c.Tree
+ val containsAwait: c.Tree => Boolean
lazy val macroPos = c.macroApplication.pos.makeTransparent
def atMacroPos(t: c.Tree) = c.universe.atPos(macroPos)(t)
+
}