From 36cbf96d8e3528a23d45ffcd602379b64b3d3f56 Mon Sep 17 00:00:00 2001 From: Roland Date: Wed, 27 Feb 2013 13:50:46 +0100 Subject: [PATCH] clarify context needed for ActorDSL.actor() and add @implicitNotFound --- .../src/test/scala/akka/actor/ActorDSLSpec.scala | 11 +++++++++-- .../src/main/scala/akka/actor/ActorRefProvider.scala | 2 ++ akka-docs/rst/scala/actors.rst | 5 +++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala index 29ad6775f3..da26490a42 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala @@ -7,14 +7,21 @@ package akka.actor import language.postfixOps import akka.testkit.{ AkkaSpec, EventFilter } -//#import import akka.actor.ActorDSL._ -//#import import akka.event.Logging.Warning import scala.concurrent.{ Await, Future } import scala.concurrent.duration._ import java.util.concurrent.TimeoutException +class ActorDSLDummy { + //#import + import akka.actor.ActorDSL._ + import akka.actor.ActorSystem + + implicit val system = ActorSystem("demo") + //#import +} + class ActorDSLSpec extends AkkaSpec { val echo = system.actorOf(Props(new Actor { diff --git a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala index 58a8e86b1c..60e28f16dc 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala @@ -13,6 +13,7 @@ import akka.util.Collections.EmptyImmutableSeq import scala.util.{ Success, Failure } import java.util.concurrent.atomic.AtomicLong import scala.concurrent.{ ExecutionContext, Future, Promise } +import scala.annotation.implicitNotFound /** * Interface for all ActorRef providers to implement. @@ -156,6 +157,7 @@ trait ActorRefProvider { * Interface implemented by ActorSystem and ActorContext, the only two places * from which you can get fresh actors. */ +@implicitNotFound("implicit ActorRefFactory required: if outside of an Actor you need an implicit ActorSystem, inside of an actor this should be the implicit ActorContext") trait ActorRefFactory { /** * INTERNAL API diff --git a/akka-docs/rst/scala/actors.rst b/akka-docs/rst/scala/actors.rst index 723f4b4669..fcf7ad0763 100644 --- a/akka-docs/rst/scala/actors.rst +++ b/akka-docs/rst/scala/actors.rst @@ -162,8 +162,9 @@ infrastructure is bundled in the following import: .. includecode:: ../../../akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala#import -This import is assumed for all code samples throughout this section. To define -a simple actor, the following is sufficient: +This import is assumed for all code samples throughout this section. The +implicit actor system serves as :class:`ActorRefFactory` for all examples +below. To define a simple actor, the following is sufficient: .. includecode:: ../../../akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala#simple-actor