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/internal/AnfTransform.scala4
-rw-r--r--src/main/scala/scala/async/internal/AsyncId.scala6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/main/scala/scala/async/internal/AnfTransform.scala b/src/main/scala/scala/async/internal/AnfTransform.scala
index 49cc3c3..7b30590 100644
--- a/src/main/scala/scala/async/internal/AnfTransform.scala
+++ b/src/main/scala/scala/async/internal/AnfTransform.scala
@@ -164,6 +164,10 @@ private[async] trait AnfTransform {
val stats :+ expr = linearize.transformToList(qual)
stats :+ treeCopy.Select(tree, expr, sel)
+ case Throw(expr) =>
+ val stats :+ expr1 = linearize.transformToList(expr)
+ stats :+ treeCopy.Throw(tree, expr1)
+
case treeInfo.Applied(fun, targs, argss) if argss.nonEmpty =>
// we an assume that no await call appears in a by-name argument position,
// this has already been checked.
diff --git a/src/main/scala/scala/async/internal/AsyncId.scala b/src/main/scala/scala/async/internal/AsyncId.scala
index 394f587..4334088 100644
--- a/src/main/scala/scala/async/internal/AsyncId.scala
+++ b/src/main/scala/scala/async/internal/AsyncId.scala
@@ -23,7 +23,9 @@ object AsyncId extends AsyncBase {
*/
object IdentityFutureSystem extends FutureSystem {
- class Prom[A](var a: A)
+ class Prom[A] {
+ var a: A = _
+ }
type Fut[A] = A
type ExecContext = Unit
@@ -39,7 +41,7 @@ object IdentityFutureSystem extends FutureSystem {
def execContextType: Type = weakTypeOf[Unit]
def createProm[A: WeakTypeTag]: Expr[Prom[A]] = reify {
- new Prom(null.asInstanceOf[A])
+ new Prom()
}
def promiseToFuture[A: WeakTypeTag](prom: Expr[Prom[A]]) = reify {