aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala')
-rw-r--r--src/main/scala/scala/async/Async.scala14
-rw-r--r--src/main/scala/scala/async/ExprBuilder.scala9
2 files changed, 15 insertions, 8 deletions
diff --git a/src/main/scala/scala/async/Async.scala b/src/main/scala/scala/async/Async.scala
index e8f5263..0a3bbbf 100644
--- a/src/main/scala/scala/async/Async.scala
+++ b/src/main/scala/scala/async/Async.scala
@@ -129,19 +129,25 @@ abstract class AsyncBase extends AsyncUtils {
val prom: Expr[futureSystem.Prom[T]] = reify {
- val result = futureSystemOps.createProm[T].splice
- var state = 0
+ val result$async = futureSystemOps.createProm[T].splice
+ var state$async = 0
futureSystemOps.future[Unit] {
c.Expr[Unit](Block(
localVarTrees :+ resumeFunTree,
Apply(Ident(name.resume), List())))
}(futureSystemOps.execContext).splice
- result
+ result$async
}
val result = futureSystemOps.promiseToFuture(prom)
- // println(s"${c.macroApplication} \nexpands to:\n ${result.tree}")
+// println(s"${c.macroApplication} \nexpands to:\n ${result.tree}")
+// val positions = result.tree.collect {
+// case t => (t.toString.take(10).replaceAll("\n", "\\n"), t.pos)
+// }
+// println(positions.mkString("\n"))
+
result
+
case tree =>
c.abort(c.macroApplication.pos, s"expression not supported by async: ${tree}")
}
diff --git a/src/main/scala/scala/async/ExprBuilder.scala b/src/main/scala/scala/async/ExprBuilder.scala
index 65e98e0..b563869 100644
--- a/src/main/scala/scala/async/ExprBuilder.scala
+++ b/src/main/scala/scala/async/ExprBuilder.scala
@@ -21,9 +21,10 @@ final class ExprBuilder[C <: Context, FS <: FutureSystem](val c: C, val futureSy
object name {
// TODO do we need to freshen any of these?
- val resume = newTermName("resume")
- val state = newTermName("state")
- val result = newTermName("result")
+ def expanded(prefix: String) = newTermName(prefix + "$async")
+ val resume = expanded("resume")
+ val state = expanded("state")
+ val result = expanded("result")
val tr = newTermName("tr")
val any = newTermName("any")
val x1 = newTermName("x$1")
@@ -256,7 +257,7 @@ final class ExprBuilder[C <: Context, FS <: FutureSystem](val c: C, val futureSy
* case any if any == num =>
* stats
* awaitable.onComplete {
- * (try: Try[A]) =>
+ * (tr: Try[A]) =>
* resultName = tr.get
* resume()
* }