aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-07-15 16:48:32 +0200
committerJason Zaugg <jzaugg@gmail.com>2014-07-15 16:48:32 +0200
commit37ef2a7aa55b72dfea98c3ac640d84e785ca778d (patch)
tree6d6d46f72918c25c3d9357aabfe5e43a97d40d45
parentf77d11962a3bf73c813a42a05e842ce710588c3f (diff)
parentf9eb27daf750010556d49dd1411ac2433ac29f17 (diff)
downloadscala-async-37ef2a7aa55b72dfea98c3ac640d84e785ca778d.tar.gz
scala-async-37ef2a7aa55b72dfea98c3ac640d84e785ca778d.tar.bz2
scala-async-37ef2a7aa55b72dfea98c3ac640d84e785ca778d.zip
Merge pull request #75 from retronym/ticket/66
Avoid NotImplementedError awaiting a Future[Nothing]
-rw-r--r--src/main/scala/scala/async/internal/Lifter.scala3
-rw-r--r--src/test/scala/scala/async/run/toughtype/ToughType.scala16
2 files changed, 17 insertions, 2 deletions
diff --git a/src/main/scala/scala/async/internal/Lifter.scala b/src/main/scala/scala/async/internal/Lifter.scala
index 7b102d1..403eae9 100644
--- a/src/main/scala/scala/async/internal/Lifter.scala
+++ b/src/main/scala/scala/async/internal/Lifter.scala
@@ -113,8 +113,7 @@ trait Lifter {
sym.setFlag(MUTABLE | STABLE | PRIVATE | LOCAL)
sym.name = name.fresh(sym.name.toTermName)
sym.modifyInfo(_.deconst)
- val zeroRhs = atPos(t.pos)(gen.mkZero(vd.symbol.info))
- treeCopy.ValDef(vd, Modifiers(sym.flags), sym.name, TypeTree(sym.tpe).setPos(t.pos), zeroRhs)
+ treeCopy.ValDef(vd, Modifiers(sym.flags), sym.name, TypeTree(sym.tpe).setPos(t.pos), EmptyTree)
case dd@DefDef(_, _, tparams, vparamss, tpt, rhs) =>
sym.name = this.name.fresh(sym.name.toTermName)
sym.setFlag(PRIVATE | LOCAL)
diff --git a/src/test/scala/scala/async/run/toughtype/ToughType.scala b/src/test/scala/scala/async/run/toughtype/ToughType.scala
index 458157c..54a53c8 100644
--- a/src/test/scala/scala/async/run/toughtype/ToughType.scala
+++ b/src/test/scala/scala/async/run/toughtype/ToughType.scala
@@ -211,6 +211,22 @@ class ToughTypeSpec {
}(SomeExecutionContext)
}
}
+
+ }
+
+ @Test def ticket66Nothing() {
+ import scala.concurrent.Future
+ import scala.concurrent.ExecutionContext.Implicits.global
+ val e = new Exception()
+ val f: Future[Nothing] = Future.failed(e)
+ val f1 = async {
+ await(f)
+ }
+ try {
+ Await.result(f1, 5.seconds)
+ } catch {
+ case `e` =>
+ }
}
}