aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/internal/AsyncId.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scala/async/internal/AsyncId.scala')
-rw-r--r--src/main/scala/scala/async/internal/AsyncId.scala18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/scala/scala/async/internal/AsyncId.scala b/src/main/scala/scala/async/internal/AsyncId.scala
index b9d82e2..7f7807f 100644
--- a/src/main/scala/scala/async/internal/AsyncId.scala
+++ b/src/main/scala/scala/async/internal/AsyncId.scala
@@ -6,6 +6,7 @@ package scala.async.internal
import language.experimental.macros
import scala.reflect.macros.Context
+import scala.reflect.api.Universe
import scala.reflect.internal.SymbolTable
object AsyncId extends AsyncBase {
@@ -17,6 +18,23 @@ object AsyncId extends AsyncBase {
def asyncIdImpl[T: c.WeakTypeTag](c: Context)(body: c.Expr[T]): c.Expr[T] = asyncImpl[T](c)(body)(c.literalUnit)
}
+object AsyncTestLV extends AsyncBase {
+ lazy val futureSystem = IdentityFutureSystem
+ type FS = IdentityFutureSystem.type
+
+ def async[T](body: T) = macro asyncIdImpl[T]
+
+ def asyncIdImpl[T: c.WeakTypeTag](c: Context)(body: c.Expr[T]): c.Expr[T] = asyncImpl[T](c)(body)(c.literalUnit)
+
+ var log: List[(String, Any)] = List()
+
+ def apply(name: String, v: Any): Unit =
+ log ::= (name -> v)
+
+ protected[async] override def nullOut(u: Universe)(name: u.Expr[String], v: u.Expr[Any]): u.Expr[Unit] =
+ u.reify { scala.async.internal.AsyncTestLV(name.splice, v.splice) }
+}
+
/**
* A trivial implementation of [[FutureSystem]] that performs computations
* on the current thread. Useful for testing.