aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/continuations/CPSBasedAsyncBase.scala
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2013-02-26 01:16:40 +0100
committerPhilipp Haller <hallerp@gmail.com>2013-04-12 18:53:28 +0200
commitffd7b9649cde61553f16c25f64c3072ecfa6c713 (patch)
tree54f458e8e9061c8537a0972ca827a56cc0ce9548 /src/main/scala/scala/async/continuations/CPSBasedAsyncBase.scala
parent1a8b72a0d1ee16ddcff637df57c2b22e2976b853 (diff)
downloadscala-async-ffd7b9649cde61553f16c25f64c3072ecfa6c713.tar.gz
scala-async-ffd7b9649cde61553f16c25f64c3072ecfa6c713.tar.bz2
scala-async-ffd7b9649cde61553f16c25f64c3072ecfa6c713.zip
Remove CPS dependency from default async implementation
- move all CPS-related code to `continuations` sub package - fix CPS-based async implementation - enable testing of CPS-based async implementation
Diffstat (limited to 'src/main/scala/scala/async/continuations/CPSBasedAsyncBase.scala')
-rw-r--r--src/main/scala/scala/async/continuations/CPSBasedAsyncBase.scala21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/scala/scala/async/continuations/CPSBasedAsyncBase.scala b/src/main/scala/scala/async/continuations/CPSBasedAsyncBase.scala
new file mode 100644
index 0000000..4e8ec80
--- /dev/null
+++ b/src/main/scala/scala/async/continuations/CPSBasedAsyncBase.scala
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2012 Typesafe Inc. <http://www.typesafe.com>
+ */
+
+package scala.async
+package continuations
+
+import scala.language.experimental.macros
+
+import scala.reflect.macros.Context
+import scala.util.continuations._
+
+/* Specializes `AsyncBaseWithCPSFallback` to always fall back to CPS, yielding a purely CPS-based
+ * implementation of async/await.
+ */
+trait CPSBasedAsyncBase extends AsyncBaseWithCPSFallback {
+
+ override def asyncImpl[T: c.WeakTypeTag](c: Context)(body: c.Expr[T]): c.Expr[futureSystem.Fut[T]] =
+ super.cpsBasedAsyncImpl[T](c)(body)
+
+}