aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/internal/AsyncMacro.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-07-07 10:48:11 +1000
committerJason Zaugg <jzaugg@gmail.com>2013-07-07 10:48:11 +1000
commit2d8506a64392cd7192b6831c38798cc9a7c8bfed (patch)
tree84eafcf1a9a179eeaa97dd1e3595c18351b2b814 /src/main/scala/scala/async/internal/AsyncMacro.scala
parentc60c38ca6098402f7a9cc6d6746b664bb2b1306c (diff)
downloadscala-async-2d8506a64392cd7192b6831c38798cc9a7c8bfed.tar.gz
scala-async-2d8506a64392cd7192b6831c38798cc9a7c8bfed.tar.bz2
scala-async-2d8506a64392cd7192b6831c38798cc9a7c8bfed.zip
Move implementation details to scala.async.internal._.
If we intend to keep CPS fallback around for any length of time it should probably move there too.
Diffstat (limited to 'src/main/scala/scala/async/internal/AsyncMacro.scala')
-rw-r--r--src/main/scala/scala/async/internal/AsyncMacro.scala29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/scala/scala/async/internal/AsyncMacro.scala b/src/main/scala/scala/async/internal/AsyncMacro.scala
new file mode 100644
index 0000000..6b7d031
--- /dev/null
+++ b/src/main/scala/scala/async/internal/AsyncMacro.scala
@@ -0,0 +1,29 @@
+package scala.async.internal
+
+import scala.tools.nsc.Global
+import scala.tools.nsc.transform.TypingTransformers
+
+object AsyncMacro {
+ def apply(c: reflect.macros.Context, futureSystem0: FutureSystem): AsyncMacro = {
+ import language.reflectiveCalls
+ val powerContext = c.asInstanceOf[c.type {val universe: Global; val callsiteTyper: universe.analyzer.Typer}]
+ new AsyncMacro {
+ val global: powerContext.universe.type = powerContext.universe
+ val callSiteTyper: global.analyzer.Typer = powerContext.callsiteTyper
+ val futureSystem: futureSystem0.type = futureSystem0
+ val futureSystemOps: futureSystem.Ops {val universe: global.type} = futureSystem0.mkOps(global)
+ val macroApplication: global.Tree = c.macroApplication.asInstanceOf[global.Tree]
+ }
+ }
+}
+
+private[async] trait AsyncMacro
+ extends TypingTransformers
+ with AnfTransform with TransformUtils with Lifter
+ with ExprBuilder with AsyncTransform with AsyncAnalysis {
+
+ val global: Global
+ val callSiteTyper: global.analyzer.Typer
+ val macroApplication: global.Tree
+
+}