summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/concurrent/impl/ExecutionContextImpl.scala2
-rw-r--r--test/files/jvm/scala-concurrent-tck.scala21
2 files changed, 22 insertions, 1 deletions
diff --git a/src/library/scala/concurrent/impl/ExecutionContextImpl.scala b/src/library/scala/concurrent/impl/ExecutionContextImpl.scala
index 9a03b1d5df..697b69badd 100644
--- a/src/library/scala/concurrent/impl/ExecutionContextImpl.scala
+++ b/src/library/scala/concurrent/impl/ExecutionContextImpl.scala
@@ -115,7 +115,7 @@ private[concurrent] object ExecutionContextImpl {
def fromExecutorService(es: ExecutorService, reporter: Throwable => Unit = ExecutionContext.defaultReporter): ExecutionContextImpl with ExecutionContextExecutorService =
new ExecutionContextImpl(es, reporter) with ExecutionContextExecutorService {
- final def asExecutorService: ExecutorService = executor.right.asInstanceOf[ExecutorService]
+ final def asExecutorService: ExecutorService = executor.right.get.asInstanceOf[ExecutorService]
override def execute(command: Runnable) = executor.right.get.execute(command)
override def shutdown() { asExecutorService.shutdown() }
override def shutdownNow() = asExecutorService.shutdownNow()
diff --git a/test/files/jvm/scala-concurrent-tck.scala b/test/files/jvm/scala-concurrent-tck.scala
index 7d79f20064..3988281006 100644
--- a/test/files/jvm/scala-concurrent-tck.scala
+++ b/test/files/jvm/scala-concurrent-tck.scala
@@ -1027,6 +1027,26 @@ trait ExecutionContextPrepare extends TestBase {
testMap()
}
+trait ExecutorServiceExecutionContext extends TestBase {
+ import java.util.concurrent.Executors
+ import scala.concurrent.duration._
+
+ def testExecutorServiceEC(): Unit =
+ once { done =>
+ val ec = ExecutionContext.fromExecutorService(Executors.newCachedThreadPool)
+ val p = Promise[Boolean]()
+ ec.execute(new Runnable {
+ def run(): Unit = p.success(true)
+ })
+ assert(Await.result(p.future, 2.seconds))
+ ec.shutdown()
+ assert(true)
+ done()
+ }
+
+ testExecutorServiceEC()
+}
+
object Test
extends App
with FutureCallbacks
@@ -1037,6 +1057,7 @@ with BlockContexts
with Exceptions
with CustomExecutionContext
with ExecutionContextPrepare
+with ExecutorServiceExecutionContext
{
System.exit(0)
}