From 4f2434b650daee74c7194057858024702cbab306 Mon Sep 17 00:00:00 2001 From: "He-Pin(kerr)" Date: Sat, 20 Sep 2025 13:28:02 +0800 Subject: [PATCH] chore: Drop @unused annotation from pekko (#2241) --- .../pekko/actor/testkit/typed/Effect.scala | 4 +- .../testkit/typed/javadsl/TestProbe.scala | 7 ++-- .../apache/pekko/actor/ActorMailboxSpec.scala | 5 ++- .../actor/ActorWithBoundedStashSpec.scala | 8 ++-- .../org/apache/pekko/actor/FSMActorSpec.scala | 5 ++- .../pekko/actor/PropsCreationSpec.scala | 7 ++-- .../apache/pekko/actor/SupervisorSpec.scala | 5 ++- .../actor/dispatch/DispatchersSpec.scala | 5 ++- .../pekko/dispatch/MailboxConfigSpec.scala | 7 ++-- .../dispatch/PriorityDispatcherSpec.scala | 6 +-- .../StablePriorityDispatcherSpec.scala | 6 +-- .../pekko/serialization/SerializeSpec.scala | 6 +-- .../pekko/util/BoundedBlockingQueueSpec.scala | 3 +- .../org/apache/pekko/util/ReflectSpec.scala | 5 ++- .../typed/internal/StashBufferImpl.scala | 12 +++--- .../actor/typed/internal/Supervision.scala | 9 +++-- .../pekko/actor/typed/javadsl/Behaviors.scala | 4 +- .../actor/typed/scaladsl/AskPattern.scala | 5 ++- .../remove-scala-2.12-support.excludes | 1 + .../org/apache/pekko/util/ByteString.scala | 2 +- .../org/apache/pekko/util/ByteString.scala | 4 +- .../org/apache/pekko/actor/AbstractFSM.scala | 2 +- .../scala/org/apache/pekko/actor/Actor.scala | 8 ++-- .../org/apache/pekko/actor/ActorCell.scala | 3 +- .../scala/org/apache/pekko/actor/FSM.scala | 4 +- .../pekko/actor/RepointableActorRef.scala | 3 +- .../pekko/actor/dungeon/DeathWatch.scala | 5 ++- .../pekko/dispatch/AbstractDispatcher.scala | 7 ++-- .../ActorClassificationUnsubscriber.scala | 5 ++- .../apache/pekko/event/LoggerMailbox.scala | 8 ++-- .../org/apache/pekko/event/Logging.scala | 8 ++-- .../main/scala/org/apache/pekko/io/Dns.scala | 3 +- .../main/scala/org/apache/pekko/io/Inet.scala | 17 ++++----- .../org/apache/pekko/io/UdpConnection.scala | 6 +-- .../pekko/io/dns/DnsResourceRecords.scala | 15 +++++--- .../org/apache/pekko/pattern/AskSupport.scala | 12 +++--- .../apache/pekko/pattern/PipeToSupport.scala | 4 +- .../apache/pekko/routing/RouterConfig.scala | 7 ++-- .../scala/org/apache/pekko/util/Unused.scala | 37 ------------------- .../metrics/ClusterMetricsRoutingSpec.scala | 3 +- .../typed/ShardingMessageExtractor.scala | 5 ++- .../typed/internal/ClusterShardingImpl.scala | 5 ++- .../typed/javadsl/ClusterSharding.scala | 2 +- .../apache/pekko/cluster/sharding/Shard.scala | 6 +-- .../cluster/client/ClusterClientSpec.scala | 3 +- .../pekko/cluster/SeedNodeProcess.scala | 5 ++- .../cluster/LargeMessageClusterSpec.scala | 4 +- .../pekko/cluster/DowningProviderSpec.scala | 6 +-- .../pekko/cluster/FailureDetectorPuppet.scala | 6 ++- .../AggregateServiceDiscoverySpec.scala | 4 +- .../apache/pekko/cluster/ddata/ORSet.scala | 5 ++- .../pekko/cluster/ddata/PruningState.scala | 5 ++- .../ReplicatorMessageSerializerSpec.scala | 5 ++- .../pekko/osgi/ActorSystemActivator.scala | 7 ++-- .../pekko/osgi/OsgiActorSystemFactory.scala | 5 ++- .../persistence/query/PersistenceQuery.scala | 4 +- .../persistence/query/DummyReadJournal.scala | 16 +++++--- .../persistence/journal/JournalSpec.scala | 4 +- .../testkit/PersistenceTestKitPlugin.scala | 7 ++-- .../PersistenceTestKitReadJournal.scala | 5 ++- .../EventSourcedBehaviorRetentionSpec.scala | 4 +- .../internal/EventSourcedBehaviorImpl.scala | 5 ++- .../typed/internal/ExternalInteractions.scala | 15 ++++---- .../typed/internal/ReplayingEvents.scala | 9 +++-- .../typed/internal/ReplayingSnapshot.scala | 8 ++-- .../internal/RequestingRecoveryPermit.scala | 5 ++- .../persistence/typed/internal/Running.scala | 20 +++++----- .../typed/javadsl/EventSourcedBehavior.scala | 7 ++-- .../internal/DurableStateBehaviorImpl.scala | 5 ++- .../DurableStateStoreInteractions.scala | 8 ++-- .../typed/state/internal/Recovering.scala | 9 +++-- .../internal/RequestingRecoveryPermit.scala | 5 ++- .../typed/state/internal/Running.scala | 10 +++-- .../persistence/fsm/PersistentFSMBase.scala | 4 +- .../journal/leveldb/LeveldbIdMapping.scala | 5 ++- .../state/DurableStateStoreRegistry.scala | 4 +- .../EndToEndEventAdapterSpec.scala | 13 ++++--- .../pekko/persistence/LoadPluginSpec.scala | 6 ++- .../PersistentActorStashingSpec.scala | 4 +- .../pekko/remote/NewRemoteActorSpec.scala | 4 +- .../pekko/remote/TransportFailSpec.scala | 4 +- .../pekko/remote/MessageSerializer.scala | 6 +-- .../pekko/remote/RemoteActorRefProvider.scala | 4 +- .../apache/pekko/remote/RemoteTransport.scala | 5 ++- .../apache/pekko/remote/RemoteWatcher.scala | 3 +- .../apache/pekko/remote/artery/Codecs.scala | 6 +-- .../pekko/remote/artery/Handshake.scala | 4 +- .../remote/artery/RemoteInstrument.scala | 4 +- .../artery/compress/InboundCompressions.scala | 4 +- .../serialization/ActorRefResolveCache.scala | 4 +- .../pekko/remote/transport/Transport.scala | 4 +- .../remote/transport/netty/NettyHelpers.scala | 13 ++++--- .../TransientSerializationErrorSpec.scala | 5 ++- .../RemoteInstrumentsSerializationSpec.scala | 5 ++- ...SerializerAllowJavaSerializationSpec.scala | 10 +++-- .../ProtobufSerializerSpec.scala | 11 +++--- .../jackson/JacksonMigration.scala | 6 +-- .../jackson/JacksonObjectMapperProvider.scala | 27 +++++++------- .../pekko/event/slf4j/Slf4jLogger.scala | 6 ++- .../scaladsl/FlowGroupedWeightedSpec.scala | 8 ++-- .../scaladsl/FlowLimitWeightedSpec.scala | 8 ++-- .../pekko/stream/scaladsl/FramingSpec.scala | 6 +-- .../stream/scaladsl/GraphUnzipWithSpec.scala | 4 +- .../pekko/stream/impl/ActorProcessor.scala | 5 ++- .../org/apache/pekko/stream/impl/FanIn.scala | 5 ++- .../org/apache/pekko/stream/impl/FanOut.scala | 4 +- .../pekko/stream/impl/TraversalBuilder.scala | 4 +- .../apache/pekko/stream/impl/fusing/Ops.scala | 4 +- .../apache/pekko/stream/javadsl/Flow.scala | 4 +- .../apache/pekko/stream/javadsl/Graph.scala | 35 ++++++++++-------- .../org/apache/pekko/stream/javadsl/Hub.scala | 16 ++++---- .../apache/pekko/stream/javadsl/Source.scala | 6 +-- .../apache/pekko/stream/scaladsl/Tcp.scala | 3 +- .../pekko/stream/stage/GraphStage.scala | 7 ++-- .../ExplicitlyTriggeredScheduler.scala | 5 ++- 115 files changed, 410 insertions(+), 377 deletions(-) delete mode 100644 actor/src/main/scala/org/apache/pekko/util/Unused.scala diff --git a/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/Effect.scala b/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/Effect.scala index 51f57c6514..fdf6c7b6ef 100644 --- a/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/Effect.scala +++ b/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/Effect.scala @@ -13,6 +13,7 @@ package org.apache.pekko.actor.testkit.typed +import scala.annotation.nowarn import scala.concurrent.duration.FiniteDuration import scala.jdk.DurationConverters._ @@ -20,7 +21,6 @@ import org.apache.pekko import pekko.actor.typed.{ ActorRef, Behavior, Props } import pekko.annotation.{ DoNotInherit, InternalApi } import pekko.util.FunctionConverters._ -import pekko.util.unused /** * All tracked effects for the [[pekko.actor.testkit.typed.scaladsl.BehaviorTestKit]] and @@ -156,7 +156,7 @@ object Effect { @InternalApi private[pekko] object SpawnedAnonymousAdapter { def apply[T]() = new SpawnedAnonymousAdapter[T](null) - def unapply[T](@unused s: SpawnedAnonymousAdapter[T]): Boolean = true + def unapply[T](@nowarn("msg=never used") s: SpawnedAnonymousAdapter[T]): Boolean = true } /** diff --git a/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/javadsl/TestProbe.scala b/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/javadsl/TestProbe.scala index b93c6f321d..c709d59a85 100644 --- a/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/javadsl/TestProbe.scala +++ b/actor-testkit-typed/src/main/scala/org/apache/pekko/actor/testkit/typed/javadsl/TestProbe.scala @@ -17,6 +17,8 @@ import java.time.Duration import java.util.{ List => JList } import java.util.function.Supplier +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.testkit.typed.FishingOutcome import pekko.actor.testkit.typed.TestKitSettings @@ -27,7 +29,6 @@ import pekko.actor.typed.RecipientRef import pekko.actor.typed.internal.InternalRecipientRef import pekko.annotation.DoNotInherit import pekko.japi.function.Creator -import pekko.util.unused object FishingOutcomes { @@ -57,13 +58,13 @@ object TestProbe { def create[M](system: ActorSystem[_]): TestProbe[M] = create(name = "testProbe", system) - def create[M](@unused clazz: Class[M], system: ActorSystem[_]): TestProbe[M] = + def create[M](@nowarn("msg=never used") clazz: Class[M], system: ActorSystem[_]): TestProbe[M] = create(system) def create[M](name: String, system: ActorSystem[_]): TestProbe[M] = new TestProbeImpl[M](name, system) - def create[M](name: String, @unused clazz: Class[M], system: ActorSystem[_]): TestProbe[M] = + def create[M](name: String, @nowarn("msg=never used") clazz: Class[M], system: ActorSystem[_]): TestProbe[M] = new TestProbeImpl[M](name, system) } diff --git a/actor-tests/src/test/scala/org/apache/pekko/actor/ActorMailboxSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/actor/ActorMailboxSpec.scala index 2d49a608d1..d299bc7616 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/actor/ActorMailboxSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/actor/ActorMailboxSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.actor +import scala.annotation.nowarn import scala.concurrent.duration.{ Duration, FiniteDuration } import org.apache.pekko @@ -20,7 +21,6 @@ import pekko.ConfigurationException import pekko.dispatch._ import pekko.testkit._ import pekko.util.Helpers.ConfigOps -import pekko.util.unused import com.typesafe.config.Config import com.typesafe.config.ConfigFactory @@ -197,7 +197,8 @@ object ActorMailboxSpec { class StashQueueReportingActor extends QueueReportingActor with Stash - class StashQueueReportingActorWithParams(@unused i: Int, @unused s: String) extends StashQueueReportingActor + class StashQueueReportingActorWithParams(@nowarn("msg=never used") i: Int, @nowarn("msg=never used") s: String) + extends StashQueueReportingActor val UnboundedMailboxTypes = Seq(classOf[UnboundedMessageQueueSemantics]) val BoundedMailboxTypes = Seq(classOf[BoundedMessageQueueSemantics]) diff --git a/actor-tests/src/test/scala/org/apache/pekko/actor/ActorWithBoundedStashSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/actor/ActorWithBoundedStashSpec.scala index bcc8c37e7f..45930934fa 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/actor/ActorWithBoundedStashSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/actor/ActorWithBoundedStashSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.actor +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko @@ -21,7 +22,6 @@ import pekko.dispatch.BoundedDequeBasedMailbox import pekko.testkit._ import pekko.testkit.DefaultTimeout import pekko.testkit.TestEvent._ -import pekko.util.unused import org.scalatest.BeforeAndAfterEach @@ -67,9 +67,11 @@ object ActorWithBoundedStashSpec { } // bounded deque-based mailbox with capacity 10 - class Bounded10(@unused settings: Settings, @unused config: Config) extends BoundedDequeBasedMailbox(10, 500.millis) + class Bounded10(@nowarn("msg=never used") settings: Settings, @nowarn("msg=never used") config: Config) + extends BoundedDequeBasedMailbox(10, 500.millis) - class Bounded100(@unused settings: Settings, @unused config: Config) extends BoundedDequeBasedMailbox(100, 500.millis) + class Bounded100(@nowarn("msg=never used") settings: Settings, @nowarn("msg=never used") config: Config) + extends BoundedDequeBasedMailbox(100, 500.millis) val dispatcherId1 = "my-dispatcher-1" val dispatcherId2 = "my-dispatcher-2" diff --git a/actor-tests/src/test/scala/org/apache/pekko/actor/FSMActorSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/actor/FSMActorSpec.scala index 06d8e3db39..a4cb514570 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/actor/FSMActorSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/actor/FSMActorSpec.scala @@ -13,13 +13,14 @@ package org.apache.pekko.actor +import scala.annotation.nowarn import scala.concurrent.Await import scala.concurrent.duration._ import org.apache.pekko import pekko.event._ import pekko.testkit._ -import pekko.util.{ unused, Timeout } +import pekko.util.Timeout import com.typesafe.config.ConfigFactory @@ -88,7 +89,7 @@ object FSMActorSpec { // verify that old-style does still compile onTransition(transitionHandler _) - def transitionHandler(@unused from: LockState, @unused to: LockState) = { + def transitionHandler(@nowarn("msg=never used") from: LockState, @nowarn("msg=never used") to: LockState) = { // dummy } diff --git a/actor-tests/src/test/scala/org/apache/pekko/actor/PropsCreationSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/actor/PropsCreationSpec.scala index 0f026fcd70..5923920544 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/actor/PropsCreationSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/actor/PropsCreationSpec.scala @@ -13,9 +13,10 @@ package org.apache.pekko.actor +import scala.annotation.nowarn + import org.apache.pekko import pekko.testkit.PekkoSpec -import pekko.util.unused object PropsCreationSpec { @@ -23,11 +24,11 @@ object PropsCreationSpec { final class B - class OneParamActor(@unused blackhole: A) extends Actor { + class OneParamActor(@nowarn("msg=never used") blackhole: A) extends Actor { override def receive = Actor.emptyBehavior } - class TwoParamActor(@unused blackhole1: A, @unused blackhole2: B) extends Actor { + class TwoParamActor(@nowarn("msg=never used") blackhole1: A, @nowarn("msg=never used") blackhole2: B) extends Actor { override def receive = Actor.emptyBehavior } diff --git a/actor-tests/src/test/scala/org/apache/pekko/actor/SupervisorSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/actor/SupervisorSpec.scala index ee97967c38..163f8c9f87 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/actor/SupervisorSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/actor/SupervisorSpec.scala @@ -15,6 +15,7 @@ package org.apache.pekko.actor import java.util.concurrent.atomic.AtomicInteger +import scala.annotation.nowarn import scala.concurrent.Await import scala.concurrent.duration._ @@ -27,7 +28,6 @@ import pekko.pattern.ask import pekko.routing.RoundRobinPool import pekko.testkit._ import pekko.testkit.TestEvent._ -import pekko.util.unused import org.scalatest.BeforeAndAfterEach @@ -113,7 +113,8 @@ object SupervisorSpec { val failure = new AssertionError("deliberate test failure") - class Mailbox(@unused settings: ActorSystem.Settings, @unused config: Config) extends MailboxType { + class Mailbox(@nowarn("msg=never used") settings: ActorSystem.Settings, @nowarn("msg=never used") config: Config) + extends MailboxType { override def create(owner: Option[ActorRef], system: Option[ActorSystem]): MessageQueue = throw failure } diff --git a/actor-tests/src/test/scala/org/apache/pekko/actor/dispatch/DispatchersSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/actor/dispatch/DispatchersSpec.scala index d0b21786f1..d33faf98b8 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/actor/dispatch/DispatchersSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/actor/dispatch/DispatchersSpec.scala @@ -16,6 +16,7 @@ package org.apache.pekko.actor.dispatch import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.atomic.AtomicBoolean +import scala.annotation.nowarn import scala.reflect.ClassTag import org.apache.pekko @@ -24,7 +25,6 @@ import pekko.actor._ import pekko.dispatch._ import pekko.routing.FromConfig import pekko.testkit.{ ImplicitSender, PekkoSpec } -import pekko.util.unused import com.typesafe.config.Config import com.typesafe.config.ConfigFactory @@ -84,7 +84,8 @@ object DispatchersSpec { } } - class OneShotMailboxType(@unused settings: ActorSystem.Settings, @unused config: Config) + class OneShotMailboxType(@nowarn("msg=never used") settings: ActorSystem.Settings, + @nowarn("msg=never used") config: Config) extends MailboxType with ProducesMessageQueue[DoublingMailbox] { val created = new AtomicBoolean(false) diff --git a/actor-tests/src/test/scala/org/apache/pekko/dispatch/MailboxConfigSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/dispatch/MailboxConfigSpec.scala index 223cf259ab..ca2039c2ef 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/dispatch/MailboxConfigSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/dispatch/MailboxConfigSpec.scala @@ -15,13 +15,13 @@ package org.apache.pekko.dispatch import java.util.concurrent.{ BlockingQueue, ConcurrentLinkedQueue } +import scala.annotation.nowarn import scala.concurrent.{ Await, ExecutionContext, Future } import scala.concurrent.duration._ import org.apache.pekko import pekko.actor._ import pekko.testkit.{ EventFilter, PekkoSpec } -import pekko.util.unused import org.scalatest.{ BeforeAndAfterAll, BeforeAndAfterEach } @@ -241,14 +241,15 @@ object CustomMailboxSpec { } """ - class MyMailboxType(@unused settings: ActorSystem.Settings, @unused config: Config) extends MailboxType { + class MyMailboxType(@nowarn("msg=never used") settings: ActorSystem.Settings, + @nowarn("msg=never used") config: Config) extends MailboxType { override def create(owner: Option[ActorRef], system: Option[ActorSystem]) = owner match { case Some(o) => new MyMailbox(o) case None => throw new Exception("no mailbox owner given") } } - class MyMailbox(@unused owner: ActorRef) extends UnboundedQueueBasedMessageQueue { + class MyMailbox(@nowarn("msg=never used") owner: ActorRef) extends UnboundedQueueBasedMessageQueue { final val queue = new ConcurrentLinkedQueue[Envelope]() } } diff --git a/actor-tests/src/test/scala/org/apache/pekko/dispatch/PriorityDispatcherSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/dispatch/PriorityDispatcherSpec.scala index 765a1ecdf1..53511f096b 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/dispatch/PriorityDispatcherSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/dispatch/PriorityDispatcherSpec.scala @@ -13,12 +13,12 @@ package org.apache.pekko.dispatch +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko import pekko.actor.{ Actor, ActorSystem, Props } import pekko.testkit.{ DefaultTimeout, PekkoSpec } -import pekko.util.unused import com.typesafe.config.Config @@ -35,14 +35,14 @@ object PriorityDispatcherSpec { } """ - class Unbounded(@unused settings: ActorSystem.Settings, @unused config: Config) + class Unbounded(@nowarn("msg=never used") settings: ActorSystem.Settings, @nowarn("msg=never used") config: Config) extends UnboundedPriorityMailbox(PriorityGenerator({ case i: Int => i // Reverse order case Result => Int.MaxValue case _ => throw new RuntimeException() // compiler exhaustiveness check pleaser }: Any => Int)) - class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config) + class Bounded(@nowarn("msg=never used") settings: ActorSystem.Settings, @nowarn("msg=never used") config: Config) extends BoundedPriorityMailbox(PriorityGenerator({ case i: Int => i // Reverse order case Result => Int.MaxValue diff --git a/actor-tests/src/test/scala/org/apache/pekko/dispatch/StablePriorityDispatcherSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/dispatch/StablePriorityDispatcherSpec.scala index 943b28fd91..1a7c5e18a7 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/dispatch/StablePriorityDispatcherSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/dispatch/StablePriorityDispatcherSpec.scala @@ -13,12 +13,12 @@ package org.apache.pekko.dispatch +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko import pekko.actor.{ Actor, ActorSystem, Props } import pekko.testkit.{ DefaultTimeout, PekkoSpec } -import pekko.util.unused import com.typesafe.config.Config @@ -34,7 +34,7 @@ object StablePriorityDispatcherSpec { } """ - class Unbounded(@unused settings: ActorSystem.Settings, @unused config: Config) + class Unbounded(@nowarn("msg=never used") settings: ActorSystem.Settings, @nowarn("msg=never used") config: Config) extends UnboundedStablePriorityMailbox(PriorityGenerator({ case i: Int if i <= 100 => i // Small integers have high priority case _: Int => 101 // Don't care for other integers @@ -42,7 +42,7 @@ object StablePriorityDispatcherSpec { case _ => throw new RuntimeException() // compiler exhaustiveness check pleaser }: Any => Int)) - class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config) + class Bounded(@nowarn("msg=never used") settings: ActorSystem.Settings, @nowarn("msg=never used") config: Config) extends BoundedStablePriorityMailbox(PriorityGenerator({ case i: Int if i <= 100 => i // Small integers have high priority case _: Int => 101 // Don't care for other integers diff --git a/actor-tests/src/test/scala/org/apache/pekko/serialization/SerializeSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/serialization/SerializeSpec.scala index 88e5517033..ba06386493 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/serialization/SerializeSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/serialization/SerializeSpec.scala @@ -29,8 +29,8 @@ import pekko.actor._ import pekko.actor.dungeon.SerializationCheckFailedException import pekko.pattern.ask import pekko.testkit.{ EventFilter, PekkoSpec } -import pekko.util.{ unused, Timeout } import pekko.util.ByteString +import pekko.util.Timeout import com.typesafe.config._ @@ -86,7 +86,7 @@ object SerializationTests { class BothTestSerializableAndJavaSerializable(s: String) extends SimpleMessage(s) with Serializable - class BothTestSerializableAndTestSerializable2(@unused s: String) extends Marker with Marker2 + class BothTestSerializableAndTestSerializable2(@nowarn("msg=never used") s: String) extends Marker with Marker2 trait A trait B @@ -121,7 +121,7 @@ object SerializationTests { receiveBuilder().build() } - class NonSerializableActor(@unused arg: AnyRef) extends Actor { + class NonSerializableActor(@nowarn("msg=never used") arg: AnyRef) extends Actor { def receive = { case s: String => sender() ! s } diff --git a/actor-tests/src/test/scala/org/apache/pekko/util/BoundedBlockingQueueSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/util/BoundedBlockingQueueSpec.scala index 4045f50b61..7cbdadb269 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/util/BoundedBlockingQueueSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/util/BoundedBlockingQueueSpec.scala @@ -17,6 +17,7 @@ import java.util import java.util.concurrent._ import java.util.concurrent.locks.{ Condition, LockSupport, ReentrantLock } +import scala.annotation.nowarn import scala.collection.mutable import scala.concurrent.{ Await, ExecutionContext, ExecutionContextExecutor, Future } import scala.jdk.CollectionConverters._ @@ -838,7 +839,7 @@ trait QueueSetupHelper { } } - def manualTimeControl(@unused on: Boolean): Unit = + def manualTimeControl(@nowarn("msg=never used") on: Boolean): Unit = waiting = Some(Manual()) override def signalAll(): Unit = condition.signalAll() diff --git a/actor-tests/src/test/scala/org/apache/pekko/util/ReflectSpec.scala b/actor-tests/src/test/scala/org/apache/pekko/util/ReflectSpec.scala index 753bebf6a8..d3b51763c3 100644 --- a/actor-tests/src/test/scala/org/apache/pekko/util/ReflectSpec.scala +++ b/actor-tests/src/test/scala/org/apache/pekko/util/ReflectSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.util +import scala.annotation.nowarn import scala.collection.immutable import org.scalatest.matchers.should.Matchers @@ -22,8 +23,8 @@ object ReflectSpec { final class A final class B - class One(@unused a: A) - class Two(@unused a: A, @unused b: B) + class One(@nowarn("msg=never used") a: A) + class Two(@nowarn("msg=never used") a: A, @nowarn("msg=never used") b: B) class MultipleOne(a: A, b: B) { def this(a: A) = this(a, null) diff --git a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/StashBufferImpl.scala b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/StashBufferImpl.scala index d94480e0dd..b0dc053a57 100644 --- a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/StashBufferImpl.scala +++ b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/StashBufferImpl.scala @@ -16,6 +16,7 @@ package org.apache.pekko.actor.typed.internal import java.util.function.{ Function => JFunction } import java.util.function.Predicate +import scala.annotation.nowarn import scala.annotation.tailrec import scala.util.control.NonFatal @@ -29,7 +30,7 @@ import pekko.actor.typed.scaladsl import pekko.actor.typed.scaladsl.ActorContext import pekko.annotation.{ InternalApi, InternalStableApi } import pekko.japi.function.Procedure -import pekko.util.{ unused, ConstantFun } +import pekko.util.ConstantFun import pekko.util.OptionVal /** @@ -97,7 +98,7 @@ import pekko.util.OptionVal } @InternalStableApi - private def createNode(message: T, @unused ctx: scaladsl.ActorContext[T]): Node[T] = { + private def createNode(message: T, @nowarn("msg=never used") ctx: scaladsl.ActorContext[T]): Node[T] = { new Node(null, message) } @@ -117,7 +118,7 @@ import pekko.util.OptionVal behavior: Behavior[T], ctx: TypedActorContext[T], wrappedMessage: T, - @unused node: Node[T]): Behavior[T] = { + @nowarn("msg=never used") node: Node[T]): Behavior[T] = { Behavior.interpretMessage(behavior, ctx, wrappedMessage) } @@ -259,10 +260,11 @@ import pekko.util.OptionVal s"StashBuffer($size/$capacity)" @InternalStableApi - private[pekko] def unstashed(@unused ctx: ActorContext[T], @unused node: Node[T]): Unit = () + private[pekko] def unstashed(@nowarn("msg=never used") ctx: ActorContext[T], @nowarn("msg=never used") node: Node[T]) + : Unit = () @InternalStableApi - private def stashCleared(@unused ctx: ActorContext[T]): Unit = () + private def stashCleared(@nowarn("msg=never used") ctx: ActorContext[T]): Unit = () } diff --git a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/Supervision.scala b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/Supervision.scala index 56e0ca8d57..ca0344ba84 100644 --- a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/Supervision.scala +++ b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/Supervision.scala @@ -16,6 +16,7 @@ package internal import java.util.concurrent.ThreadLocalRandom +import scala.annotation.nowarn import scala.concurrent.duration.Deadline import scala.concurrent.duration.FiniteDuration import scala.reflect.ClassTag @@ -35,7 +36,6 @@ import pekko.actor.typed.scaladsl.StashBuffer import pekko.annotation.InternalApi import pekko.event.Logging import pekko.util.OptionVal -import pekko.util.unused import org.slf4j.event.Level @@ -143,7 +143,7 @@ private abstract class SimpleSupervisor[T, Thr <: Throwable: ClassTag](ss: Super } catch handleReceiveException(ctx, target) } - protected def handleException(@unused ctx: TypedActorContext[Any]): Catcher[Behavior[T]] = { + protected def handleException(@nowarn("msg=never used") ctx: TypedActorContext[Any]): Catcher[Behavior[T]] = { case NonFatal(t) if isInstanceOfTheThrowableClass(t) => BehaviorImpl.failed(t) } @@ -157,7 +157,8 @@ private abstract class SimpleSupervisor[T, Thr <: Throwable: ClassTag](ss: Super handleException(ctx) } -private class StopSupervisor[T, Thr <: Throwable: ClassTag](@unused initial: Behavior[T], strategy: Stop) +private class StopSupervisor[T, Thr <: Throwable: ClassTag](@nowarn("msg=never used") initial: Behavior[T], + strategy: Stop) extends SimpleSupervisor[T, Thr](strategy) { override def handleException(ctx: TypedActorContext[Any]): Catcher[Behavior[T]] = { @@ -294,7 +295,7 @@ private class RestartSupervisor[T, Thr <: Throwable: ClassTag](initial: Behavior override protected def handleExceptionOnStart( ctx: TypedActorContext[Any], - @unused target: PreStartTarget[T]): Catcher[Behavior[T]] = { + @nowarn("msg=never used") target: PreStartTarget[T]): Catcher[Behavior[T]] = { case NonFatal(t) if isInstanceOfTheThrowableClass(t) => ctx.asScala.cancelAllTimers() strategy match { diff --git a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Behaviors.scala b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Behaviors.scala index 0556652034..af15921512 100644 --- a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Behaviors.scala +++ b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Behaviors.scala @@ -16,6 +16,7 @@ package org.apache.pekko.actor.typed.javadsl import java.util.Collections import java.util.function.{ Function => JFunction, Supplier } +import scala.annotation.nowarn import scala.jdk.CollectionConverters._ import scala.reflect.ClassTag @@ -24,7 +25,6 @@ import pekko.actor.typed._ import pekko.actor.typed.internal.{ BehaviorImpl, StashBufferImpl, TimerSchedulerImpl, WithMdcBehaviorInterceptor } import pekko.japi.function.{ Effect, Function2 => JapiFunction2 } import pekko.japi.pf.PFBuilder -import pekko.util.unused /** * Factories for [[pekko.actor.typed.Behavior]]. @@ -199,7 +199,7 @@ object Behaviors { * @param type the supertype of all messages accepted by this behavior * @return the behavior builder */ - def receive[T](@unused `type`: Class[T]): BehaviorBuilder[T] = BehaviorBuilder.create[T] + def receive[T](@nowarn("msg=never used") `type`: Class[T]): BehaviorBuilder[T] = BehaviorBuilder.create[T] /** * Construct an actor behavior that can react to lifecycle signals only. diff --git a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/AskPattern.scala b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/AskPattern.scala index c1e5993a37..a3e813a0ff 100644 --- a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/AskPattern.scala +++ b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/AskPattern.scala @@ -28,7 +28,7 @@ import pekko.actor.typed.internal.InternalRecipientRef import pekko.annotation.InternalStableApi import pekko.pattern.PromiseActorRef import pekko.pattern.StatusReply -import pekko.util.{ unused, Timeout } +import pekko.util.Timeout /** * The ask-pattern implements the initiator side of a request–reply protocol. @@ -168,7 +168,8 @@ object AskPattern { val promiseRef: PromiseActorRef = _promiseRef @InternalStableApi - private[pekko] def ask[T](target: InternalRecipientRef[T], message: T, @unused timeout: Timeout): Future[U] = { + private[pekko] def ask[T](target: InternalRecipientRef[T], message: T, @nowarn("msg=never used") timeout: Timeout) + : Future[U] = { target ! message future } diff --git a/actor/src/main/mima-filters/2.0.x.backwards.excludes/remove-scala-2.12-support.excludes b/actor/src/main/mima-filters/2.0.x.backwards.excludes/remove-scala-2.12-support.excludes index 82ee634ab9..65cfc4c25b 100644 --- a/actor/src/main/mima-filters/2.0.x.backwards.excludes/remove-scala-2.12-support.excludes +++ b/actor/src/main/mima-filters/2.0.x.backwards.excludes/remove-scala-2.12-support.excludes @@ -24,3 +24,4 @@ ProblemFilters.exclude[MissingClassProblem]("org.apache.pekko.compat.Future$") ProblemFilters.exclude[MissingClassProblem]("org.apache.pekko.util.ccompat.package") ProblemFilters.exclude[MissingClassProblem]("org.apache.pekko.util.ccompat.package$") ProblemFilters.exclude[MissingClassProblem]("org.apache.pekko.util.ccompat.package$JavaConverters$") +ProblemFilters.exclude[MissingClassProblem]("org.apache.pekko.util.unused") diff --git a/actor/src/main/scala-2.13/org/apache/pekko/util/ByteString.scala b/actor/src/main/scala-2.13/org/apache/pekko/util/ByteString.scala index 277960a4b5..50dff2bc81 100644 --- a/actor/src/main/scala-2.13/org/apache/pekko/util/ByteString.scala +++ b/actor/src/main/scala-2.13/org/apache/pekko/util/ByteString.scala @@ -989,7 +989,7 @@ sealed abstract class ByteString * @param buffer a ByteBuffer to copy bytes to * @return the number of bytes actually copied */ - def copyToBuffer(@unused buffer: ByteBuffer): Int + def copyToBuffer(@nowarn("msg=never used") buffer: ByteBuffer): Int /** * Create a new ByteString with all contents compacted into a single, diff --git a/actor/src/main/scala-3/org/apache/pekko/util/ByteString.scala b/actor/src/main/scala-3/org/apache/pekko/util/ByteString.scala index 3234963538..e5698ecb1c 100644 --- a/actor/src/main/scala-3/org/apache/pekko/util/ByteString.scala +++ b/actor/src/main/scala-3/org/apache/pekko/util/ByteString.scala @@ -19,7 +19,7 @@ import java.nio.{ ByteBuffer, ByteOrder } import java.nio.charset.{ Charset, StandardCharsets } import java.util.Base64 -import scala.annotation.{ tailrec, varargs } +import scala.annotation.{ nowarn, tailrec, varargs } import scala.collection.{ immutable, mutable } import scala.collection.immutable.{ IndexedSeq, IndexedSeqOps, StrictOptimizedSeqOps, VectorBuilder } import scala.collection.mutable.{ Builder, WrappedArray } @@ -992,7 +992,7 @@ sealed abstract class ByteString * @param buffer a ByteBuffer to copy bytes to * @return the number of bytes actually copied */ - def copyToBuffer(@unused buffer: ByteBuffer): Int + def copyToBuffer(@nowarn("msg=never used") buffer: ByteBuffer): Int /** * Create a new ByteString with all contents compacted into a single, diff --git a/actor/src/main/scala/org/apache/pekko/actor/AbstractFSM.scala b/actor/src/main/scala/org/apache/pekko/actor/AbstractFSM.scala index 60d7b46424..d82d379720 100644 --- a/actor/src/main/scala/org/apache/pekko/actor/AbstractFSM.scala +++ b/actor/src/main/scala/org/apache/pekko/actor/AbstractFSM.scala @@ -17,7 +17,7 @@ import scala.concurrent.duration.FiniteDuration import scala.jdk.DurationConverters._ import org.apache.pekko -import org.apache.pekko.japi.function.{ Effect, Function2, Predicate, Predicate2, Procedure, Procedure2, Procedure3 } +import pekko.japi.function.{ Effect, Function2, Predicate, Predicate2, Procedure, Procedure2, Procedure3 } /** * Java API: compatible with lambda expressions diff --git a/actor/src/main/scala/org/apache/pekko/actor/Actor.scala b/actor/src/main/scala/org/apache/pekko/actor/Actor.scala index bf5ffcf713..98924ab1e5 100644 --- a/actor/src/main/scala/org/apache/pekko/actor/Actor.scala +++ b/actor/src/main/scala/org/apache/pekko/actor/Actor.scala @@ -15,6 +15,7 @@ package org.apache.pekko.actor import java.util.Optional +import scala.annotation.nowarn import scala.annotation.tailrec import scala.beans.BeanProperty import scala.util.control.NoStackTrace @@ -23,7 +24,6 @@ import org.apache.pekko import pekko.PekkoException import pekko.annotation.InternalApi import pekko.event.LoggingAdapter -import pekko.util.unused /** * INTERNAL API @@ -370,7 +370,7 @@ trait ActorLogging { this: Actor => trait DiagnosticActorLogging extends Actor { import pekko.event.Logging._ val log = pekko.event.Logging(this) - def mdc(@unused currentMessage: Any): MDC = emptyMDC + def mdc(@nowarn("msg=never used") currentMessage: Any): MDC = emptyMDC override protected[pekko] def aroundReceive(receive: Actor.Receive, msg: Any): Unit = try { @@ -622,7 +622,7 @@ trait Actor { */ @throws(classOf[Exception]) // when changing this you MUST also change ActorDocTest // #lifecycle-hooks - def preRestart(@unused reason: Throwable, @unused message: Option[Any]): Unit = { + def preRestart(@nowarn("msg=never used") reason: Throwable, @nowarn("msg=never used") message: Option[Any]): Unit = { context.children.foreach { child => context.unwatch(child) context.stop(child) @@ -640,7 +640,7 @@ trait Actor { */ @throws(classOf[Exception]) // when changing this you MUST also change ActorDocTest // #lifecycle-hooks - def postRestart(@unused reason: Throwable): Unit = { + def postRestart(@nowarn("msg=never used") reason: Throwable): Unit = { preStart() } // #lifecycle-hooks diff --git a/actor/src/main/scala/org/apache/pekko/actor/ActorCell.scala b/actor/src/main/scala/org/apache/pekko/actor/ActorCell.scala index 724b09c018..011ca93f06 100644 --- a/actor/src/main/scala/org/apache/pekko/actor/ActorCell.scala +++ b/actor/src/main/scala/org/apache/pekko/actor/ActorCell.scala @@ -30,7 +30,6 @@ import pekko.dispatch.{ Envelope, MessageDispatcher } import pekko.dispatch.sysmsg._ import pekko.event.Logging.{ Debug, Error, LogEvent } import pekko.japi.function.Procedure -import pekko.util.unused /** * The actor context - the view of the actor cell from the actor. @@ -240,7 +239,7 @@ trait ActorContext extends ActorRefFactory with ClassicActorContextProvider { /** * ActorContexts shouldn't be Serializable */ - final protected def writeObject(@unused o: ObjectOutputStream): Unit = + final protected def writeObject(@nowarn("msg=never used") o: ObjectOutputStream): Unit = throw new NotSerializableException("ActorContext is not serializable!") } diff --git a/actor/src/main/scala/org/apache/pekko/actor/FSM.scala b/actor/src/main/scala/org/apache/pekko/actor/FSM.scala index 59995474d3..190e753091 100644 --- a/actor/src/main/scala/org/apache/pekko/actor/FSM.scala +++ b/actor/src/main/scala/org/apache/pekko/actor/FSM.scala @@ -13,6 +13,7 @@ package org.apache.pekko.actor +import scala.annotation.nowarn import scala.collection.mutable import scala.concurrent.ExecutionContextExecutor import scala.concurrent.duration._ @@ -24,7 +25,6 @@ import language.implicitConversions import org.apache.pekko import pekko.annotation.InternalApi import pekko.routing.{ Deafen, Listen, Listeners } -import pekko.util.unused object FSM { @@ -834,7 +834,7 @@ trait FSM[S, D] extends Actor with Listeners with ActorLogging { processEvent(event, source) } - private[pekko] def processEvent(event: Event, @unused source: AnyRef): Unit = { + private[pekko] def processEvent(event: Event, @nowarn("msg=never used") source: AnyRef): Unit = { val stateFunc = stateFunctions(currentState.stateName) val nextState = if (stateFunc.isDefinedAt(event)) { stateFunc(event) diff --git a/actor/src/main/scala/org/apache/pekko/actor/RepointableActorRef.scala b/actor/src/main/scala/org/apache/pekko/actor/RepointableActorRef.scala index 122cce4d33..433e7492ac 100644 --- a/actor/src/main/scala/org/apache/pekko/actor/RepointableActorRef.scala +++ b/actor/src/main/scala/org/apache/pekko/actor/RepointableActorRef.scala @@ -26,7 +26,6 @@ import pekko.actor.dungeon.ChildrenContainer import pekko.dispatch._ import pekko.dispatch.sysmsg._ import pekko.event.Logging.Warning -import pekko.util.unused /** * This actor ref starts out with some dummy cell (by default just enqueuing @@ -136,7 +135,7 @@ private[pekko] class RepointableActorRef( * This is called by activate() to obtain the cell which is to replace the * unstarted cell. The cell must be fully functional. */ - def newCell(@unused old: UnstartedCell): Cell = + def newCell(@nowarn("msg=never used") old: UnstartedCell): Cell = new ActorCell(system, this, props, dispatcher, supervisor).init(sendSupervise = false, mailboxType) def start(): Unit = () diff --git a/actor/src/main/scala/org/apache/pekko/actor/dungeon/DeathWatch.scala b/actor/src/main/scala/org/apache/pekko/actor/dungeon/DeathWatch.scala index b00b1f98ba..b7353d688a 100644 --- a/actor/src/main/scala/org/apache/pekko/actor/dungeon/DeathWatch.scala +++ b/actor/src/main/scala/org/apache/pekko/actor/dungeon/DeathWatch.scala @@ -13,12 +13,13 @@ package org.apache.pekko.actor.dungeon +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.{ Actor, ActorCell, ActorRef, ActorRefScope, Address, InternalActorRef, Terminated } import pekko.dispatch.sysmsg.{ DeathWatchNotification, Unwatch, Watch } import pekko.event.AddressTerminatedTopic import pekko.event.Logging.{ Debug, Warning } -import pekko.util.unused private[pekko] trait DeathWatch { this: ActorCell => @@ -162,7 +163,7 @@ private[pekko] trait DeathWatch { this: ActorCell => } } - protected def unwatchWatchedActors(@unused actor: Actor): Unit = + protected def unwatchWatchedActors(@nowarn("msg=never used") actor: Actor): Unit = if (watching.nonEmpty) { maintainAddressTerminatedSubscription() { try { diff --git a/actor/src/main/scala/org/apache/pekko/dispatch/AbstractDispatcher.scala b/actor/src/main/scala/org/apache/pekko/dispatch/AbstractDispatcher.scala index dcbac6387f..4c4e74d448 100644 --- a/actor/src/main/scala/org/apache/pekko/dispatch/AbstractDispatcher.scala +++ b/actor/src/main/scala/org/apache/pekko/dispatch/AbstractDispatcher.scala @@ -28,7 +28,7 @@ import pekko.dispatch.affinity.AffinityPoolConfigurator import pekko.dispatch.sysmsg._ import pekko.event.EventStream import pekko.event.Logging.{ emptyMDC, Debug, Error, LogEventException, Warning } -import pekko.util.{ unused, Index, JavaVersion } +import pekko.util.{ Index, JavaVersion } import com.typesafe.config.Config @@ -350,7 +350,8 @@ abstract class MessageDispatcher(val configurator: MessageDispatcherConfigurator /** * An ExecutorServiceConfigurator is a class that given some prerequisites and a configuration can create instances of ExecutorService */ -abstract class ExecutorServiceConfigurator(@unused config: Config, @unused prerequisites: DispatcherPrerequisites) +abstract class ExecutorServiceConfigurator(@nowarn("msg=never used") config: Config, + @nowarn("msg=never used") prerequisites: DispatcherPrerequisites) extends ExecutorServiceFactoryProvider /** @@ -517,7 +518,7 @@ class ThreadPoolExecutorConfigurator(config: Config, prerequisites: DispatcherPr protected def createThreadPoolConfigBuilder( config: Config, - @unused prerequisites: DispatcherPrerequisites): ThreadPoolConfigBuilder = { + @nowarn("msg=never used") prerequisites: DispatcherPrerequisites): ThreadPoolConfigBuilder = { import org.apache.pekko.util.Helpers.ConfigOps val builder = ThreadPoolConfigBuilder(ThreadPoolConfig()) diff --git a/actor/src/main/scala/org/apache/pekko/event/ActorClassificationUnsubscriber.scala b/actor/src/main/scala/org/apache/pekko/event/ActorClassificationUnsubscriber.scala index 622ebce3b6..6ecf922088 100644 --- a/actor/src/main/scala/org/apache/pekko/event/ActorClassificationUnsubscriber.scala +++ b/actor/src/main/scala/org/apache/pekko/event/ActorClassificationUnsubscriber.scala @@ -15,10 +15,11 @@ package org.apache.pekko.event import java.util.concurrent.atomic.AtomicInteger +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor._ import pekko.event.Logging.simpleName -import pekko.util.unused /** * INTERNAL API @@ -89,7 +90,7 @@ private[pekko] object ActorClassificationUnsubscriber { system: ActorSystem, busName: String, unsubscribe: ActorRef => Unit, - @unused debug: Boolean = false): ActorRef = { + @nowarn("msg=never used") debug: Boolean = false): ActorRef = { val debug = system.settings.config.getBoolean("pekko.actor.debug.event-stream") system .asInstanceOf[ExtendedActorSystem] diff --git a/actor/src/main/scala/org/apache/pekko/event/LoggerMailbox.scala b/actor/src/main/scala/org/apache/pekko/event/LoggerMailbox.scala index e9f85a8f56..6981a8c838 100644 --- a/actor/src/main/scala/org/apache/pekko/event/LoggerMailbox.scala +++ b/actor/src/main/scala/org/apache/pekko/event/LoggerMailbox.scala @@ -13,6 +13,8 @@ package org.apache.pekko.event +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.ActorRef import pekko.actor.ActorSystem @@ -21,7 +23,6 @@ import pekko.dispatch.MessageQueue import pekko.dispatch.ProducesMessageQueue import pekko.dispatch.UnboundedMailbox import pekko.event.Logging.LogEvent -import pekko.util.unused import com.typesafe.config.Config @@ -30,7 +31,8 @@ trait LoggerMessageQueueSemantics /** * INTERNAL API */ -private[pekko] class LoggerMailboxType(@unused settings: ActorSystem.Settings, @unused config: Config) +private[pekko] class LoggerMailboxType(@nowarn("msg=never used") settings: ActorSystem.Settings, + @nowarn("msg=never used") config: Config) extends MailboxType with ProducesMessageQueue[LoggerMailbox] { @@ -43,7 +45,7 @@ private[pekko] class LoggerMailboxType(@unused settings: ActorSystem.Settings, @ /** * INTERNAL API */ -private[pekko] class LoggerMailbox(@unused owner: ActorRef, system: ActorSystem) +private[pekko] class LoggerMailbox(@nowarn("msg=never used") owner: ActorRef, system: ActorSystem) extends UnboundedMailbox.MessageQueue with LoggerMessageQueueSemantics { diff --git a/actor/src/main/scala/org/apache/pekko/event/Logging.scala b/actor/src/main/scala/org/apache/pekko/event/Logging.scala index c5e08081e3..fdaf05c93f 100644 --- a/actor/src/main/scala/org/apache/pekko/event/Logging.scala +++ b/actor/src/main/scala/org/apache/pekko/event/Logging.scala @@ -33,7 +33,6 @@ import pekko.dispatch.RequiresMessageQueue import pekko.event.Logging._ import pekko.util.Helpers import pekko.util.Timeout -import pekko.util.unused /** * This trait brings log level handling to the EventStream: it reads the log @@ -291,7 +290,7 @@ trait LoggingBus extends ActorEventBus { "Cannot find LogSource for ${T} please see ScalaDoc for LogSource for how to obtain or construct one.") trait LogSource[ -T] { def genString(t: T): String - def genString(t: T, @unused system: ActorSystem): String = genString(t) + def genString(t: T, @nowarn("msg=never used") system: ActorSystem): String = genString(t) def getClazz(t: T): Class[_] = t.getClass } @@ -487,7 +486,7 @@ object Logging { /** * INTERNAL API */ - private[pekko] class LogExt(@unused system: ExtendedActorSystem) extends Extension { + private[pekko] class LogExt(@nowarn("msg=never used") system: ExtendedActorSystem) extends Extension { private val loggerId = new AtomicInteger def id() = loggerId.incrementAndGet() } @@ -1222,7 +1221,8 @@ trait LoggingAdapter { protected def notifyError(message: String): Unit protected def notifyError(cause: Throwable, message: String): Unit protected def notifyWarning(message: String): Unit - protected def notifyWarning(@unused cause: Throwable, message: String): Unit = notifyWarning(message) + protected def notifyWarning(@nowarn("msg=never used") cause: Throwable, message: String): Unit = + notifyWarning(message) protected def notifyInfo(message: String): Unit protected def notifyDebug(message: String): Unit diff --git a/actor/src/main/scala/org/apache/pekko/io/Dns.scala b/actor/src/main/scala/org/apache/pekko/io/Dns.scala index 1915c1e58d..9421705247 100644 --- a/actor/src/main/scala/org/apache/pekko/io/Dns.scala +++ b/actor/src/main/scala/org/apache/pekko/io/Dns.scala @@ -25,7 +25,6 @@ import pekko.annotation.DoNotInherit import pekko.annotation.InternalApi import pekko.event.Logging import pekko.io.dns.DnsProtocol -import pekko.util.unused import com.typesafe.config.Config @@ -37,7 +36,7 @@ import com.typesafe.config.Config @DoNotInherit abstract class Dns { - def cached(@unused request: DnsProtocol.Resolve): Option[DnsProtocol.Resolved] = None + def cached(@nowarn("msg=never used") request: DnsProtocol.Resolve): Option[DnsProtocol.Resolved] = None def resolve(request: DnsProtocol.Resolve, system: ActorSystem, sender: ActorRef): Option[DnsProtocol.Resolved] = { val ret = cached(request) diff --git a/actor/src/main/scala/org/apache/pekko/io/Inet.scala b/actor/src/main/scala/org/apache/pekko/io/Inet.scala index 8394b736e7..ccf28a98bd 100644 --- a/actor/src/main/scala/org/apache/pekko/io/Inet.scala +++ b/actor/src/main/scala/org/apache/pekko/io/Inet.scala @@ -18,8 +18,7 @@ import java.net.ServerSocket import java.net.Socket import java.nio.channels.DatagramChannel -import org.apache.pekko -import pekko.util.unused +import scala.annotation.nowarn object Inet { @@ -32,22 +31,22 @@ object Inet { /** * Action to be taken for this option before bind() is called */ - def beforeDatagramBind(@unused ds: DatagramSocket): Unit = () + def beforeDatagramBind(@nowarn("msg=never used") ds: DatagramSocket): Unit = () /** * Action to be taken for this option before bind() is called */ - def beforeServerSocketBind(@unused ss: ServerSocket): Unit = () + def beforeServerSocketBind(@nowarn("msg=never used") ss: ServerSocket): Unit = () /** * Action to be taken for this option before calling connect() */ - def beforeConnect(@unused s: Socket): Unit = () + def beforeConnect(@nowarn("msg=never used") s: Socket): Unit = () /** * Action to be taken for this option after connect returned. */ - def afterConnect(@unused s: Socket): Unit = () + def afterConnect(@nowarn("msg=never used") s: Socket): Unit = () } /** @@ -61,17 +60,17 @@ object Inet { /** * Action to be taken for this option after connect returned. */ - def afterBind(@unused s: DatagramSocket): Unit = () + def afterBind(@nowarn("msg=never used") s: DatagramSocket): Unit = () /** * Action to be taken for this option after connect returned. */ - def afterBind(@unused s: ServerSocket): Unit = () + def afterBind(@nowarn("msg=never used") s: ServerSocket): Unit = () /** * Action to be taken for this option after connect returned. */ - def afterConnect(@unused s: DatagramSocket): Unit = () + def afterConnect(@nowarn("msg=never used") s: DatagramSocket): Unit = () } diff --git a/actor/src/main/scala/org/apache/pekko/io/UdpConnection.scala b/actor/src/main/scala/org/apache/pekko/io/UdpConnection.scala index a1abfb34c8..21fd6679ab 100644 --- a/actor/src/main/scala/org/apache/pekko/io/UdpConnection.scala +++ b/actor/src/main/scala/org/apache/pekko/io/UdpConnection.scala @@ -18,7 +18,7 @@ import java.nio.ByteBuffer import java.nio.channels.DatagramChannel import java.nio.channels.SelectionKey._ -import scala.annotation.tailrec +import scala.annotation.{ nowarn, tailrec } import scala.util.control.NonFatal import org.apache.pekko @@ -28,7 +28,7 @@ import pekko.dispatch.{ RequiresMessageQueue, UnboundedMessageQueueSemantics } import pekko.io.SelectionHandler._ import pekko.io.UdpConnected._ import pekko.io.dns.DnsProtocol -import pekko.util.{ unused, ByteString } +import pekko.util.ByteString /** * INTERNAL API @@ -79,7 +79,7 @@ private[io] class UdpConnection( } } - def doConnect(@unused address: InetSocketAddress): Unit = { + def doConnect(@nowarn("msg=never used") address: InetSocketAddress): Unit = { channel = DatagramChannel.open channel.configureBlocking(false) val socket = channel.socket diff --git a/actor/src/main/scala/org/apache/pekko/io/dns/DnsResourceRecords.scala b/actor/src/main/scala/org/apache/pekko/io/dns/DnsResourceRecords.scala index 362da803e9..a02d6f3ead 100644 --- a/actor/src/main/scala/org/apache/pekko/io/dns/DnsResourceRecords.scala +++ b/actor/src/main/scala/org/apache/pekko/io/dns/DnsResourceRecords.scala @@ -15,6 +15,7 @@ package org.apache.pekko.io.dns import java.net.{ Inet4Address, Inet6Address, InetAddress } +import scala.annotation.nowarn import scala.annotation.switch import scala.concurrent.duration._ @@ -25,7 +26,7 @@ import pekko.actor.NoSerializationVerificationNeeded import pekko.annotation.DoNotInherit import pekko.annotation.InternalApi import pekko.io.dns.internal.{ DomainName, _ } -import pekko.util.{ unused, ByteIterator, ByteString } +import pekko.util.{ ByteIterator, ByteString } /** * Not for user extension @@ -46,7 +47,7 @@ final case class ARecord(override val name: String, override val ttl: CachePolic */ @InternalApi private[io] object ARecord { - def parseBody(name: String, ttl: Ttl, @unused length: Short, it: ByteIterator): ARecord = { + def parseBody(name: String, ttl: Ttl, @nowarn("msg=never used") length: Short, it: ByteIterator): ARecord = { val address = Array.ofDim[Byte](4) it.getBytes(address) ARecord(name, ttl, InetAddress.getByAddress(address).asInstanceOf[Inet4Address]) @@ -66,7 +67,7 @@ private[io] object AAAARecord { * INTERNAL API */ @InternalApi - def parseBody(name: String, ttl: Ttl, @unused length: Short, it: ByteIterator): AAAARecord = { + def parseBody(name: String, ttl: Ttl, @nowarn("msg=never used") length: Short, it: ByteIterator): AAAARecord = { val address = Array.ofDim[Byte](16) it.getBytes(address) AAAARecord(name, ttl, InetAddress.getByAddress(address).asInstanceOf[Inet6Address]) @@ -83,7 +84,8 @@ private[dns] object CNameRecord { * INTERNAL API */ @InternalApi - def parseBody(name: String, ttl: Ttl, @unused length: Short, it: ByteIterator, msg: ByteString): CNameRecord = { + def parseBody(name: String, ttl: Ttl, @nowarn("msg=never used") length: Short, it: ByteIterator, msg: ByteString) + : CNameRecord = { CNameRecord(name, ttl, DomainName.parse(it, msg)) } } @@ -107,7 +109,8 @@ private[dns] object SRVRecord { * INTERNAL API */ @InternalApi - def parseBody(name: String, ttl: Ttl, @unused length: Short, it: ByteIterator, msg: ByteString): SRVRecord = { + def parseBody(name: String, ttl: Ttl, @nowarn("msg=never used") length: Short, it: ByteIterator, msg: ByteString) + : SRVRecord = { val priority = it.getShort.toInt & 0xFFFF val weight = it.getShort.toInt & 0xFFFF val port = it.getShort.toInt & 0xFFFF @@ -138,7 +141,7 @@ private[dns] object UnknownRecord { ttl: Ttl, recType: Short, recClass: Short, - @unused length: Short, + @nowarn("msg=never used") length: Short, it: ByteIterator): UnknownRecord = UnknownRecord(name, ttl, recType, recClass, it.toByteString) } diff --git a/actor/src/main/scala/org/apache/pekko/pattern/AskSupport.scala b/actor/src/main/scala/org/apache/pekko/pattern/AskSupport.scala index 2cdc45ba22..37134d1f03 100644 --- a/actor/src/main/scala/org/apache/pekko/pattern/AskSupport.scala +++ b/actor/src/main/scala/org/apache/pekko/pattern/AskSupport.scala @@ -28,7 +28,7 @@ import org.apache.pekko import pekko.actor._ import pekko.annotation.{ InternalApi, InternalStableApi } import pekko.dispatch.sysmsg._ -import pekko.util.{ unused, ByteString, Timeout } +import pekko.util.{ ByteString, Timeout } /** * This is what is used to complete a Future that is returned from an ask/? call, @@ -674,22 +674,24 @@ private[pekko] final class PromiseActorRef( } @InternalStableApi - private[pekko] def ask(actorSel: ActorSelection, message: Any, @unused timeout: Timeout): Future[Any] = { + private[pekko] def ask(actorSel: ActorSelection, message: Any, @nowarn("msg=never used") timeout: Timeout) + : Future[Any] = { actorSel.tell(message, this) result.future } @InternalStableApi - private[pekko] def ask(actorRef: ActorRef, message: Any, @unused timeout: Timeout): Future[Any] = { + private[pekko] def ask(actorRef: ActorRef, message: Any, @nowarn("msg=never used") timeout: Timeout): Future[Any] = { actorRef.tell(message, this) result.future } @InternalStableApi - private[pekko] def onComplete(@unused message: Any, @unused alreadyCompleted: Boolean): Unit = {} + private[pekko] def onComplete(@nowarn("msg=never used") message: Any, + @nowarn("msg=never used") alreadyCompleted: Boolean): Unit = {} @InternalStableApi - private[pekko] def onTimeout(@unused timeout: Timeout): Unit = {} + private[pekko] def onTimeout(@nowarn("msg=never used") timeout: Timeout): Unit = {} } /** diff --git a/actor/src/main/scala/org/apache/pekko/pattern/PipeToSupport.scala b/actor/src/main/scala/org/apache/pekko/pattern/PipeToSupport.scala index 99817818fd..a254b8fba1 100644 --- a/actor/src/main/scala/org/apache/pekko/pattern/PipeToSupport.scala +++ b/actor/src/main/scala/org/apache/pekko/pattern/PipeToSupport.scala @@ -15,6 +15,7 @@ package org.apache.pekko.pattern import java.util.concurrent.CompletionStage +import scala.annotation.nowarn import scala.concurrent.{ ExecutionContext, Future } import scala.util.{ Failure, Success } @@ -23,7 +24,6 @@ import language.implicitConversions import org.apache.pekko import pekko.actor.{ Actor, ActorRef, Status } import pekko.actor.ActorSelection -import pekko.util.unused trait PipeToSupport { @@ -53,7 +53,7 @@ trait PipeToSupport { } final class PipeableCompletionStage[T](val future: CompletionStage[T])( - implicit @unused executionContext: ExecutionContext) { + implicit @nowarn("msg=never used") executionContext: ExecutionContext) { def pipeTo(recipient: ActorRef)(implicit sender: ActorRef = Actor.noSender): CompletionStage[T] = { future.whenComplete((t: T, ex: Throwable) => { if (t != null) recipient ! t diff --git a/actor/src/main/scala/org/apache/pekko/routing/RouterConfig.scala b/actor/src/main/scala/org/apache/pekko/routing/RouterConfig.scala index 052cb81527..d3b96fdeb4 100644 --- a/actor/src/main/scala/org/apache/pekko/routing/RouterConfig.scala +++ b/actor/src/main/scala/org/apache/pekko/routing/RouterConfig.scala @@ -28,7 +28,6 @@ import pekko.actor.SupervisorStrategy import pekko.actor.Terminated import pekko.dispatch.Dispatchers import pekko.japi.Util.immutableSeq -import pekko.util.unused /** * This trait represents a router factory: it produces the actual router actor @@ -72,7 +71,7 @@ trait RouterConfig extends Serializable { * Management messages not handled by the "head" actor are * delegated to this controller actor. */ - def routingLogicController(@unused routingLogic: RoutingLogic): Option[Props] = None + def routingLogicController(@nowarn("msg=never used") routingLogic: RoutingLogic): Option[Props] = None /** * Is the message handled by the router head actor or the @@ -92,12 +91,12 @@ trait RouterConfig extends Serializable { /** * Overridable merge strategy, by default completely prefers `this` (i.e. no merge). */ - def withFallback(@unused other: RouterConfig): RouterConfig = this + def withFallback(@nowarn("msg=never used") other: RouterConfig): RouterConfig = this /** * Check that everything is there which is needed. Called in constructor of RoutedActorRef to fail early. */ - def verifyConfig(@unused path: ActorPath): Unit = () + def verifyConfig(@nowarn("msg=never used") path: ActorPath): Unit = () /** * INTERNAL API diff --git a/actor/src/main/scala/org/apache/pekko/util/Unused.scala b/actor/src/main/scala/org/apache/pekko/util/Unused.scala deleted file mode 100644 index ca32876027..0000000000 --- a/actor/src/main/scala/org/apache/pekko/util/Unused.scala +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * license agreements; and to You under the Apache License, version 2.0: - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * This file is part of the Apache Pekko project, which was derived from Akka. - */ - -/* - * Copyright (C) 2018-2022 Lightbend Inc. - */ - -package org.apache.pekko.util - -import scala.annotation.nowarn - -import org.apache.pekko.annotation.InternalApi - -/** - * Marker for explicit or implicit parameter known to be unused, yet - * still necessary from a binary compatibility perspective - * or other reason. Useful in combination with - * `-Ywarn-unused:explicits,implicits` compiler options. - * - * Extends 'deprecated' to make sure using a parameter marked @unused - * produces a warning, and not using a parameter marked @unused does not - * produce an 'unused parameter' warning. - * - * This approach is deprecated in Scala 2.13 and scheduled to be - * removed in 2.14. Perhaps we should promote introducing an `@unused` - * to Scala? https://contributors.scala-lang.org/t/more-error-reporting-annotations/1681/7 - * - * INTERNAL API - */ -@nowarn("msg=deprecated") -@InternalApi private[pekko] class unused extends deprecated("unused", "") diff --git a/cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/ClusterMetricsRoutingSpec.scala b/cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/ClusterMetricsRoutingSpec.scala index 093a328a90..ed0739250c 100644 --- a/cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/ClusterMetricsRoutingSpec.scala +++ b/cluster-metrics/src/multi-jvm/scala/org/apache/pekko/cluster/metrics/ClusterMetricsRoutingSpec.scala @@ -34,7 +34,6 @@ import pekko.routing.Routees import pekko.serialization.jackson.CborSerializable import pekko.testkit.{ DefaultTimeout, ImplicitSender, LongRunningTest } import pekko.testkit.GHExcludeTest -import pekko.util.unused import com.typesafe.config.Config import com.typesafe.config.ConfigFactory @@ -121,7 +120,7 @@ object AdaptiveLoadBalancingRouterConfig extends MultiNodeConfig { } -class TestCustomMetricsSelector(@unused config: Config) extends MetricsSelector { +class TestCustomMetricsSelector(@nowarn("msg=never used") config: Config) extends MetricsSelector { override def weights(nodeMetrics: Set[NodeMetrics]): Map[Address, Int] = Map.empty } diff --git a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/ShardingMessageExtractor.scala b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/ShardingMessageExtractor.scala index 324af3a39e..f0838fc83f 100644 --- a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/ShardingMessageExtractor.scala +++ b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/ShardingMessageExtractor.scala @@ -13,9 +13,10 @@ package org.apache.pekko.cluster.sharding.typed +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.{ InvalidMessageException, WrappedMessage } -import pekko.util.unused object ShardingMessageExtractor { @@ -33,7 +34,7 @@ object ShardingMessageExtractor { /** * Scala API: Create a message extractor for a protocol where the entity id is available in each message. */ - def noEnvelope[M](numberOfShards: Int, @unused stopMessage: M)( + def noEnvelope[M](numberOfShards: Int, @nowarn("msg=never used") stopMessage: M)( extractEntityId: M => String): ShardingMessageExtractor[M, M] = new HashCodeNoEnvelopeMessageExtractor[M](numberOfShards) { def entityId(message: M) = extractEntityId(message) diff --git a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala index 9be9afd359..97f08acba0 100644 --- a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala +++ b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/internal/ClusterShardingImpl.scala @@ -19,6 +19,7 @@ import java.time.Duration import java.util.concurrent.CompletionStage import java.util.concurrent.ConcurrentHashMap +import scala.annotation.nowarn import scala.concurrent.Future import scala.jdk.DurationConverters._ import scala.jdk.FutureConverters._ @@ -51,7 +52,7 @@ import pekko.japi.function.{ Function => JFunction } import pekko.pattern.AskTimeoutException import pekko.pattern.PromiseActorRef import pekko.pattern.StatusReply -import pekko.util.{ unused, ByteString, Timeout } +import pekko.util.{ ByteString, Timeout } /** * INTERNAL API @@ -396,7 +397,7 @@ import pekko.util.{ unused, ByteString, Timeout } shardRegion: pekko.actor.ActorRef, entityId: String, message: T, - @unused timeout: Timeout): Future[U] = { + @nowarn("msg=never used") timeout: Timeout): Future[U] = { shardRegion ! ShardingEnvelope(entityId, message) future } diff --git a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/javadsl/ClusterSharding.scala b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/javadsl/ClusterSharding.scala index 53eb355d8d..5e9accbac1 100644 --- a/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/javadsl/ClusterSharding.scala +++ b/cluster-sharding-typed/src/main/scala/org/apache/pekko/cluster/sharding/typed/javadsl/ClusterSharding.scala @@ -396,7 +396,7 @@ final class EntityContext[M]( } -@nowarn // for unused msgClass to make class type explicit in the Java API. Not using @unused as the user is likely to see it +@nowarn // for unused msgClass to make class type explicit in the Java API. Not using @nowarn("msg=never used") as the user is likely to see it /** Allows starting a specific Sharded Entity by its entity identifier */ object StartEntity { diff --git a/cluster-sharding/src/main/scala/org/apache/pekko/cluster/sharding/Shard.scala b/cluster-sharding/src/main/scala/org/apache/pekko/cluster/sharding/Shard.scala index 96bf7733bc..f5feecb9c8 100644 --- a/cluster-sharding/src/main/scala/org/apache/pekko/cluster/sharding/Shard.scala +++ b/cluster-sharding/src/main/scala/org/apache/pekko/cluster/sharding/Shard.scala @@ -16,6 +16,7 @@ package org.apache.pekko.cluster.sharding import java.net.URLEncoder import java.util +import scala.annotation.nowarn import scala.collection.immutable.Set import scala.concurrent.duration._ @@ -50,7 +51,6 @@ import pekko.pattern.pipe import pekko.util.MessageBufferMap import pekko.util.OptionVal import pekko.util.PrettyDuration._ -import pekko.util.unused /** * INTERNAL API @@ -424,7 +424,7 @@ private[pekko] class Shard( entityProps: String => Props, settings: ClusterShardingSettings, extractEntityId: ShardRegion.ExtractEntityId, - @unused extractShardId: ShardRegion.ExtractShardId, + @nowarn("msg=never used") extractShardId: ShardRegion.ExtractShardId, handOffStopMessage: Any, rememberEntitiesProvider: Option[RememberEntitiesProvider]) extends Actor @@ -1141,7 +1141,7 @@ private[pekko] class Shard( * of active entities. */ @InternalStableApi - def entityCreated(@unused id: EntityId): Int = entities.nrActiveEntities() + def entityCreated(@nowarn("msg=never used") id: EntityId): Int = entities.nrActiveEntities() // ===== buffering while busy saving a start or stop when remembering entities ===== def appendToMessageBuffer(id: EntityId, msg: Any, snd: ActorRef): Unit = { diff --git a/cluster-tools/src/multi-jvm/scala/org/apache/pekko/cluster/client/ClusterClientSpec.scala b/cluster-tools/src/multi-jvm/scala/org/apache/pekko/cluster/client/ClusterClientSpec.scala index 3304caa81a..3ec43fa091 100644 --- a/cluster-tools/src/multi-jvm/scala/org/apache/pekko/cluster/client/ClusterClientSpec.scala +++ b/cluster-tools/src/multi-jvm/scala/org/apache/pekko/cluster/client/ClusterClientSpec.scala @@ -35,7 +35,6 @@ import pekko.remote.testkit.STMultiNodeSpec import pekko.remote.transport.ThrottlerTransportAdapter.Direction import pekko.testkit._ import pekko.util.Timeout -import pekko.util.unused import com.typesafe.config.ConfigFactory @@ -200,7 +199,7 @@ class ClusterClientSpec extends MultiNodeSpec(ClusterClientSpec) with STMultiNod node(r) / "system" / "receptionist" } - @unused + @nowarn("msg=never used") def docOnly = { // not used, only demo // #initialContacts val initialContacts = Set( diff --git a/cluster/src/main/scala/org/apache/pekko/cluster/SeedNodeProcess.scala b/cluster/src/main/scala/org/apache/pekko/cluster/SeedNodeProcess.scala index a41bf90c98..9656b14020 100644 --- a/cluster/src/main/scala/org/apache/pekko/cluster/SeedNodeProcess.scala +++ b/cluster/src/main/scala/org/apache/pekko/cluster/SeedNodeProcess.scala @@ -13,13 +13,13 @@ package org.apache.pekko.cluster +import scala.annotation.nowarn import scala.collection.immutable import scala.concurrent.duration.{ Deadline, _ } import org.apache.pekko import pekko.actor.{ Actor, ActorRef, Address, CoordinatedShutdown, ReceiveTimeout } import pekko.annotation.{ InternalApi, InternalStableApi } -import pekko.util.unused /** * INTERNAL API. @@ -327,7 +327,8 @@ private[cluster] final class JoinSeedNodeProcess( } @InternalStableApi - private[pekko] def onReceiveTimeout(@unused seedNodes: immutable.IndexedSeq[Address], @unused attempt: Int): Unit = {} + private[pekko] def onReceiveTimeout(@nowarn("msg=never used") seedNodes: immutable.IndexedSeq[Address], + @nowarn("msg=never used") attempt: Int): Unit = {} def done: Actor.Receive = { case InitJoinAck(_, _) => // already received one, skip rest diff --git a/cluster/src/multi-jvm/scala/org/apache/pekko/cluster/LargeMessageClusterSpec.scala b/cluster/src/multi-jvm/scala/org/apache/pekko/cluster/LargeMessageClusterSpec.scala index 5f24f4bf2f..756b17ee66 100644 --- a/cluster/src/multi-jvm/scala/org/apache/pekko/cluster/LargeMessageClusterSpec.scala +++ b/cluster/src/multi-jvm/scala/org/apache/pekko/cluster/LargeMessageClusterSpec.scala @@ -16,6 +16,7 @@ package org.apache.pekko.cluster import java.io.NotSerializableException import java.nio.charset.StandardCharsets +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko @@ -30,7 +31,6 @@ import pekko.remote.testconductor.RoleName import pekko.remote.testkit.MultiNodeConfig import pekko.serialization.SerializerWithStringManifest import pekko.testkit._ -import pekko.util.unused import com.typesafe.config.ConfigFactory @@ -76,7 +76,7 @@ object LargeMessageClusterMultiJvmSpec extends MultiNodeConfig { final case class Slow(payload: Array[Byte]) - class SlowSerializer(@unused system: ExtendedActorSystem) extends SerializerWithStringManifest { + class SlowSerializer(@nowarn("msg=never used") system: ExtendedActorSystem) extends SerializerWithStringManifest { override def identifier = 999 override def manifest(o: AnyRef) = "a" override def toBinary(o: AnyRef) = o match { diff --git a/cluster/src/test/scala/org/apache/pekko/cluster/DowningProviderSpec.scala b/cluster/src/test/scala/org/apache/pekko/cluster/DowningProviderSpec.scala index 7cb64b96ef..8bcdb142d6 100644 --- a/cluster/src/test/scala/org/apache/pekko/cluster/DowningProviderSpec.scala +++ b/cluster/src/test/scala/org/apache/pekko/cluster/DowningProviderSpec.scala @@ -15,6 +15,7 @@ package org.apache.pekko.cluster import java.util.concurrent.atomic.AtomicBoolean +import scala.annotation.nowarn import scala.concurrent.duration._ import scala.util.control.NonFatal @@ -24,21 +25,20 @@ import pekko.actor.ActorSystem import pekko.actor.Props import pekko.testkit.TestKit.awaitCond import pekko.testkit.TestKit.shutdownActorSystem -import pekko.util.unused import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec import com.typesafe.config.ConfigFactory -class FailingDowningProvider(@unused system: ActorSystem) extends DowningProvider { +class FailingDowningProvider(@nowarn("msg=never used") system: ActorSystem) extends DowningProvider { override val downRemovalMargin: FiniteDuration = 20.seconds override def downingActorProps: Option[Props] = { throw new ConfigurationException("this provider never works") } } -class DummyDowningProvider(@unused system: ActorSystem) extends DowningProvider { +class DummyDowningProvider(@nowarn("msg=never used") system: ActorSystem) extends DowningProvider { override val downRemovalMargin: FiniteDuration = 20.seconds val actorPropsAccessed = new AtomicBoolean(false) diff --git a/cluster/src/test/scala/org/apache/pekko/cluster/FailureDetectorPuppet.scala b/cluster/src/test/scala/org/apache/pekko/cluster/FailureDetectorPuppet.scala index 99f2385a66..eb1eb1934b 100644 --- a/cluster/src/test/scala/org/apache/pekko/cluster/FailureDetectorPuppet.scala +++ b/cluster/src/test/scala/org/apache/pekko/cluster/FailureDetectorPuppet.scala @@ -15,17 +15,19 @@ package org.apache.pekko.cluster import java.util.concurrent.atomic.AtomicReference +import scala.annotation.nowarn + import org.apache.pekko import pekko.event.EventStream import pekko.remote.FailureDetector -import pekko.util.unused import com.typesafe.config.Config /** * User controllable "puppet" failure detector. */ -class FailureDetectorPuppet(@unused config: Config, @unused ev: EventStream) extends FailureDetector { +class FailureDetectorPuppet(@nowarn("msg=never used") config: Config, @nowarn("msg=never used") ev: EventStream) + extends FailureDetector { sealed trait Status object Up extends Status diff --git a/discovery/src/test/scala/org/apache/pekko/discovery/aggregate/AggregateServiceDiscoverySpec.scala b/discovery/src/test/scala/org/apache/pekko/discovery/aggregate/AggregateServiceDiscoverySpec.scala index 00fd779b7e..43fd74ab81 100644 --- a/discovery/src/test/scala/org/apache/pekko/discovery/aggregate/AggregateServiceDiscoverySpec.scala +++ b/discovery/src/test/scala/org/apache/pekko/discovery/aggregate/AggregateServiceDiscoverySpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.discovery.aggregate +import scala.annotation.nowarn import scala.collection.immutable import scala.concurrent.Future import scala.concurrent.duration._ @@ -22,7 +23,6 @@ import pekko.actor.{ ActorSystem, ExtendedActorSystem } import pekko.discovery.{ Discovery, Lookup, ServiceDiscovery } import pekko.discovery.ServiceDiscovery.{ Resolved, ResolvedTarget } import pekko.testkit.TestKit -import pekko.util.unused import org.scalatest.BeforeAndAfterAll import org.scalatest.concurrent.ScalaFutures @@ -31,7 +31,7 @@ import org.scalatest.wordspec.AnyWordSpecLike import com.typesafe.config.{ Config, ConfigFactory } -class StubbedServiceDiscovery(@unused system: ExtendedActorSystem) extends ServiceDiscovery { +class StubbedServiceDiscovery(@nowarn("msg=never used") system: ExtendedActorSystem) extends ServiceDiscovery { override def lookup(query: Lookup, resolveTimeout: FiniteDuration): Future[Resolved] = { if (query.serviceName == "stubbed") { diff --git a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala index d3c7820a39..d618face23 100644 --- a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala +++ b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala @@ -31,13 +31,14 @@ package org.apache.pekko.cluster.ddata +import scala.annotation.nowarn import scala.annotation.tailrec import scala.collection.immutable import org.apache.pekko import pekko.annotation.InternalApi import pekko.cluster.UniqueAddress -import pekko.util.{ unused, HashCode } +import pekko.util.HashCode object ORSet { private val _empty: ORSet[Any] = new ORSet(Map.empty, VersionVector.empty) @@ -401,7 +402,7 @@ final class ORSet[A] private[pekko] ( * [[ORSet#remove(node:org\.apache\.pekko\.cluster\.ddata\.SelfUniqueAddress*]] * for each element, but it is more efficient. */ - def clear(@unused node: SelfUniqueAddress): ORSet[A] = clear() + def clear(@nowarn("msg=never used") node: SelfUniqueAddress): ORSet[A] = clear() /** * INTERNAL API diff --git a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PruningState.scala b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PruningState.scala index f029624f85..36300b0d14 100644 --- a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PruningState.scala +++ b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PruningState.scala @@ -13,12 +13,13 @@ package org.apache.pekko.cluster.ddata +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.Address import pekko.annotation.InternalApi import pekko.cluster.Member import pekko.cluster.UniqueAddress -import pekko.util.unused /** * INTERNAL API @@ -33,7 +34,7 @@ import pekko.util.unused } final case class PruningPerformed(obsoleteTime: Long) extends PruningState { def isObsolete(currentTime: Long): Boolean = obsoleteTime <= currentTime - def addSeen(@unused node: Address): PruningState = this + def addSeen(@nowarn("msg=never used") node: Address): PruningState = this def estimatedSize: Int = EstimatedSize.LongValue } } diff --git a/distributed-data/src/test/scala/org/apache/pekko/cluster/ddata/protobuf/ReplicatorMessageSerializerSpec.scala b/distributed-data/src/test/scala/org/apache/pekko/cluster/ddata/protobuf/ReplicatorMessageSerializerSpec.scala index bdc84a55e1..a54adb163d 100644 --- a/distributed-data/src/test/scala/org/apache/pekko/cluster/ddata/protobuf/ReplicatorMessageSerializerSpec.scala +++ b/distributed-data/src/test/scala/org/apache/pekko/cluster/ddata/protobuf/ReplicatorMessageSerializerSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.cluster.ddata.protobuf +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko @@ -34,7 +35,7 @@ import pekko.cluster.ddata.Replicator.Internal._ import pekko.cluster.ddata.VersionVector import pekko.remote.RARP import pekko.testkit.TestKit -import pekko.util.{ unused, ByteString } +import pekko.util.ByteString import org.scalatest.BeforeAndAfterAll import org.scalatest.matchers.should.Matchers @@ -265,7 +266,7 @@ class ReplicatorMessageSerializerSpec "suppory getOrAdd" in { var n = 0 - def createValue(@unused a: Read): AnyRef = { + def createValue(@nowarn("msg=never used") a: Read): AnyRef = { n += 1 new AnyRef { override val toString = "v" + n diff --git a/osgi/src/main/scala/org/apache/pekko/osgi/ActorSystemActivator.scala b/osgi/src/main/scala/org/apache/pekko/osgi/ActorSystemActivator.scala index fbcbe7fd36..9ce75fb961 100644 --- a/osgi/src/main/scala/org/apache/pekko/osgi/ActorSystemActivator.scala +++ b/osgi/src/main/scala/org/apache/pekko/osgi/ActorSystemActivator.scala @@ -15,12 +15,13 @@ package org.apache.pekko.osgi import java.util.{ Dictionary, Properties } +import scala.annotation.nowarn + import org.osgi.framework._ import org.osgi.service.log.LogService import org.apache.pekko import pekko.actor.{ ActorRefFactory, ActorSystem } -import pekko.util.unused import com.typesafe.config.{ Config, ConfigFactory } @@ -129,7 +130,7 @@ abstract class ActorSystemActivator extends BundleActivator { * @param context the bundle context * @return the actor system name */ - def getActorSystemName(@unused context: BundleContext): String = null + def getActorSystemName(@nowarn("msg=never used") context: BundleContext): String = null /** * Override this method to define a configuration for your [[pekko.actor.ActorSystem]] instance. @@ -141,6 +142,6 @@ abstract class ActorSystemActivator extends BundleActivator { * @param context the bundle context * @return the actor system specific configuration, ConfigFactory.empty by default */ - def getActorSystemConfiguration(@unused context: BundleContext): Config = ConfigFactory.empty + def getActorSystemConfiguration(@nowarn("msg=never used") context: BundleContext): Config = ConfigFactory.empty } diff --git a/osgi/src/main/scala/org/apache/pekko/osgi/OsgiActorSystemFactory.scala b/osgi/src/main/scala/org/apache/pekko/osgi/OsgiActorSystemFactory.scala index ec2ac267f1..475be03f12 100644 --- a/osgi/src/main/scala/org/apache/pekko/osgi/OsgiActorSystemFactory.scala +++ b/osgi/src/main/scala/org/apache/pekko/osgi/OsgiActorSystemFactory.scala @@ -13,11 +13,12 @@ package org.apache.pekko.osgi +import scala.annotation.nowarn + import org.osgi.framework.BundleContext import org.apache.pekko import pekko.actor.ActorSystem -import pekko.util.unused import com.typesafe.config.{ Config, ConfigFactory } @@ -53,7 +54,7 @@ class OsgiActorSystemFactory( * ensuring that the default/reference configuration is loaded from the pekko-actor bundle. * Configuration files found in pekko-actor bundle */ - def actorSystemConfig(@unused context: BundleContext): Config = { + def actorSystemConfig(@nowarn("msg=never used") context: BundleContext): Config = { config.withFallback( ConfigFactory .load(classloader) diff --git a/persistence-query/src/main/scala/org/apache/pekko/persistence/query/PersistenceQuery.scala b/persistence-query/src/main/scala/org/apache/pekko/persistence/query/PersistenceQuery.scala index 89ea9cca07..480b6af00f 100644 --- a/persistence-query/src/main/scala/org/apache/pekko/persistence/query/PersistenceQuery.scala +++ b/persistence-query/src/main/scala/org/apache/pekko/persistence/query/PersistenceQuery.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.query +import scala.annotation.nowarn import scala.reflect.ClassTag import org.apache.pekko @@ -20,7 +21,6 @@ import pekko.actor._ import pekko.annotation.InternalApi import pekko.persistence.{ PersistencePlugin, PluginProvider } import pekko.persistence.query.scaladsl.ReadJournal -import pekko.util.unused import com.typesafe.config.{ Config, ConfigFactory } @@ -73,7 +73,7 @@ class PersistenceQuery(system: ExtendedActorSystem) * read journal configuration entry. */ final def getReadJournalFor[T <: javadsl.ReadJournal]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], readJournalPluginId: String, readJournalPluginConfig: Config): T = pluginFor(readJournalPluginId, readJournalPluginConfig).javadslPlugin.asInstanceOf[T] diff --git a/persistence-query/src/test/scala/org/apache/pekko/persistence/query/DummyReadJournal.scala b/persistence-query/src/test/scala/org/apache/pekko/persistence/query/DummyReadJournal.scala index 778c85cef0..905920cedb 100644 --- a/persistence-query/src/test/scala/org/apache/pekko/persistence/query/DummyReadJournal.scala +++ b/persistence-query/src/test/scala/org/apache/pekko/persistence/query/DummyReadJournal.scala @@ -13,11 +13,12 @@ package org.apache.pekko.persistence.query +import scala.annotation.nowarn + import org.apache.pekko import pekko.NotUsed import pekko.actor.ExtendedActorSystem import pekko.stream.scaladsl.Source -import pekko.util.unused import com.typesafe.config.{ Config, ConfigFactory } @@ -77,13 +78,16 @@ class DummyReadJournalProvider(dummyValue: String) extends ReadJournalProvider { javaReadJournal } -class DummyReadJournalProvider2(@unused sys: ExtendedActorSystem) extends DummyReadJournalProvider +class DummyReadJournalProvider2(@nowarn("msg=never used") sys: ExtendedActorSystem) extends DummyReadJournalProvider -class DummyReadJournalProvider3(@unused sys: ExtendedActorSystem, @unused conf: Config) extends DummyReadJournalProvider +class DummyReadJournalProvider3(@nowarn("msg=never used") sys: ExtendedActorSystem, + @nowarn("msg=never used") conf: Config) extends DummyReadJournalProvider -class DummyReadJournalProvider4(@unused sys: ExtendedActorSystem, @unused conf: Config, @unused confPath: String) +class DummyReadJournalProvider4(@nowarn("msg=never used") sys: ExtendedActorSystem, + @nowarn("msg=never used") conf: Config, @nowarn("msg=never used") confPath: String) extends DummyReadJournalProvider -class DummyReadJournalProvider5(@unused sys: ExtendedActorSystem) extends DummyReadJournalProvider +class DummyReadJournalProvider5(@nowarn("msg=never used") sys: ExtendedActorSystem) extends DummyReadJournalProvider -class CustomDummyReadJournalProvider5(@unused sys: ExtendedActorSystem) extends DummyReadJournalProvider("custom") +class CustomDummyReadJournalProvider5(@nowarn("msg=never used") sys: ExtendedActorSystem) + extends DummyReadJournalProvider("custom") diff --git a/persistence-tck/src/main/scala/org/apache/pekko/persistence/journal/JournalSpec.scala b/persistence-tck/src/main/scala/org/apache/pekko/persistence/journal/JournalSpec.scala index 9505e31f70..5388c35351 100644 --- a/persistence-tck/src/main/scala/org/apache/pekko/persistence/journal/JournalSpec.scala +++ b/persistence-tck/src/main/scala/org/apache/pekko/persistence/journal/JournalSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.journal +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko @@ -21,7 +22,6 @@ import pekko.persistence._ import pekko.persistence.JournalProtocol._ import pekko.persistence.scalatest.{ MayVerb, OptionalTests } import pekko.testkit._ -import pekko.util.unused import com.typesafe.config._ @@ -79,7 +79,7 @@ abstract class JournalSpec(config: Config) * test case. `pid` is the `persistenceId` that will be used in the test. * This method may be needed to clean pre-existing events from the log. */ - def preparePersistenceId(@unused pid: String): Unit = () + def preparePersistenceId(@nowarn("msg=never used") pid: String): Unit = () /** * Implementation may override and return false if it does not diff --git a/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/PersistenceTestKitPlugin.scala b/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/PersistenceTestKitPlugin.scala index 5729ac262f..e308cb34b2 100644 --- a/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/PersistenceTestKitPlugin.scala +++ b/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/PersistenceTestKitPlugin.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.testkit +import scala.annotation.nowarn import scala.collection.immutable import scala.concurrent.Future import scala.util.Try @@ -26,7 +27,6 @@ import pekko.persistence.journal.Tagged import pekko.persistence.snapshot.SnapshotStore import pekko.persistence.testkit.internal.{ InMemStorageExtension, SnapshotStorageEmulatorExtension } import pekko.persistence.testkit.internal.CurrentTime -import pekko.util.unused import com.typesafe.config.{ Config, ConfigFactory } @@ -36,7 +36,8 @@ import com.typesafe.config.{ Config, ConfigFactory } * Persistence testkit plugin for events. */ @InternalApi -class PersistenceTestKitPlugin(@unused cfg: Config, cfgPath: String) extends AsyncWriteJournal with ActorLogging { +class PersistenceTestKitPlugin(@nowarn("msg=never used") cfg: Config, cfgPath: String) extends AsyncWriteJournal + with ActorLogging { private final val storage = { log.debug("Using in memory storage [{}] for test kit journal", cfgPath) @@ -145,7 +146,7 @@ class PersistenceTestKitSnapshotPlugin( // providing this parameter in first position as unused // because Persistence extension that instantiates the plugins // does not support constructors without it - @unused cfg: Config, + @nowarn("msg=never used") cfg: Config, cfgPath: String ) extends SnapshotStore { diff --git a/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/query/scaladsl/PersistenceTestKitReadJournal.scala b/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/query/scaladsl/PersistenceTestKitReadJournal.scala index 9060d13427..73c7945160 100644 --- a/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/query/scaladsl/PersistenceTestKitReadJournal.scala +++ b/persistence-testkit/src/main/scala/org/apache/pekko/persistence/testkit/query/scaladsl/PersistenceTestKitReadJournal.scala @@ -12,6 +12,7 @@ */ package org.apache.pekko.persistence.testkit.query.scaladsl +import scala.annotation.nowarn import scala.collection.immutable import org.apache.pekko @@ -40,7 +41,6 @@ import pekko.persistence.testkit.query.internal.EventsBySliceStage import pekko.persistence.testkit.query.internal.EventsByTagStage import pekko.persistence.typed.PersistenceId import pekko.stream.scaladsl.Source -import pekko.util.unused import org.slf4j.LoggerFactory @@ -50,7 +50,8 @@ object PersistenceTestKitReadJournal { val Identifier = "pekko.persistence.testkit.query" } -final class PersistenceTestKitReadJournal(system: ExtendedActorSystem, @unused config: Config, configPath: String) +final class PersistenceTestKitReadJournal(system: ExtendedActorSystem, @nowarn("msg=never used") config: Config, + configPath: String) extends ReadJournal with EventsByPersistenceIdQuery with CurrentEventsByPersistenceIdQuery diff --git a/persistence-typed-tests/src/test/scala/org/apache/pekko/persistence/typed/scaladsl/EventSourcedBehaviorRetentionSpec.scala b/persistence-typed-tests/src/test/scala/org/apache/pekko/persistence/typed/scaladsl/EventSourcedBehaviorRetentionSpec.scala index 29a29b6369..8016af6328 100644 --- a/persistence-typed-tests/src/test/scala/org/apache/pekko/persistence/typed/scaladsl/EventSourcedBehaviorRetentionSpec.scala +++ b/persistence-typed-tests/src/test/scala/org/apache/pekko/persistence/typed/scaladsl/EventSourcedBehaviorRetentionSpec.scala @@ -15,6 +15,7 @@ package org.apache.pekko.persistence.typed.scaladsl import java.util.concurrent.atomic.AtomicInteger +import scala.annotation.nowarn import scala.concurrent.duration._ import scala.util.Success import scala.util.Try @@ -38,7 +39,6 @@ import pekko.persistence.typed.SnapshotCompleted import pekko.persistence.typed.SnapshotFailed import pekko.persistence.typed.SnapshotSelectionCriteria import pekko.serialization.jackson.CborSerializable -import pekko.util.unused import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpecLike @@ -59,7 +59,7 @@ object EventSourcedBehaviorRetentionSpec extends Matchers { final case class State(value: Int, history: Vector[Int]) extends CborSerializable def counter( - @unused ctx: ActorContext[Command], + @nowarn("msg=never used") ctx: ActorContext[Command], persistenceId: PersistenceId, probe: Option[ActorRef[(State, Event)]] = None, snapshotSignalProbe: Option[ActorRef[WrappedSignal]] = None, diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedBehaviorImpl.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedBehaviorImpl.scala index 82bd7c535e..b9f406b5e4 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedBehaviorImpl.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedBehaviorImpl.scala @@ -17,6 +17,8 @@ import java.util.Optional import java.util.UUID import java.util.concurrent.atomic.AtomicInteger +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.typed import pekko.actor.typed.ActorRef @@ -53,7 +55,6 @@ import pekko.persistence.typed.scaladsl._ import pekko.persistence.typed.scaladsl.{ Recovery => TypedRecovery } import pekko.persistence.typed.scaladsl.RetentionCriteria import pekko.util.ConstantFun -import pekko.util.unused import org.slf4j.LoggerFactory @@ -250,7 +251,7 @@ private[pekko] final case class EventSourcedBehaviorImpl[Command, Event, State]( } @InternalStableApi - private[pekko] def initialize(@unused context: ActorContext[_]): Unit = () + private[pekko] def initialize(@nowarn("msg=never used") context: ActorContext[_]): Unit = () override def receiveSignal( handler: PartialFunction[(State, Signal), Unit]): EventSourcedBehavior[Command, Event, State] = diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ExternalInteractions.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ExternalInteractions.scala index 5cfde884f3..417af3ddad 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ExternalInteractions.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ExternalInteractions.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.typed.internal +import scala.annotation.nowarn import scala.collection.immutable import org.apache.pekko @@ -29,7 +30,7 @@ import pekko.annotation.InternalStableApi import pekko.persistence._ import pekko.persistence.JournalProtocol.ReplayMessages import pekko.persistence.SnapshotProtocol.LoadSnapshot -import pekko.util.{ unused, OptionVal } +import pekko.util.OptionVal /** INTERNAL API */ @InternalApi @@ -87,9 +88,9 @@ private[pekko] trait JournalInteractions[C, E, S] { @InternalStableApi private[pekko] def onWriteInitiated( - @unused ctx: ActorContext[_], - @unused cmd: Any, - @unused repr: PersistentRepr): Unit = () + @nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") cmd: Any, + @nowarn("msg=never used") repr: PersistentRepr): Unit = () protected def internalPersistAll( ctx: ActorContext[_], @@ -128,9 +129,9 @@ private[pekko] trait JournalInteractions[C, E, S] { @InternalStableApi private[pekko] def onWritesInitiated( - @unused ctx: ActorContext[_], - @unused cmd: Any, - @unused repr: immutable.Seq[PersistentRepr]): Unit = () + @nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") cmd: Any, + @nowarn("msg=never used") repr: immutable.Seq[PersistentRepr]): Unit = () protected def replayEvents(fromSeqNr: Long, toSeqNr: Long): Unit = { setup.internalLogger.debug2("Replaying events: from: {}, to: {}", fromSeqNr, toSeqNr) diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingEvents.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingEvents.scala index 955e2575a3..9dce502153 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingEvents.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingEvents.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.typed.internal +import scala.annotation.nowarn import scala.collection.immutable import scala.concurrent.duration._ import scala.util.control.NonFatal @@ -39,7 +40,6 @@ import pekko.persistence.typed.internal.Running.WithSeqNrAccessible import pekko.persistence.typed.internal.Running.startReplicationStream import pekko.util.OptionVal import pekko.util.PrettyDuration._ -import pekko.util.unused /** * * @@ -97,11 +97,12 @@ private[pekko] final class ReplayingEvents[C, E, S]( onRecoveryStart(setup.context) @InternalStableApi - def onRecoveryStart(@unused context: ActorContext[_]): Unit = () + def onRecoveryStart(@nowarn("msg=never used") context: ActorContext[_]): Unit = () @InternalStableApi - def onRecoveryComplete(@unused context: ActorContext[_]): Unit = () + def onRecoveryComplete(@nowarn("msg=never used") context: ActorContext[_]): Unit = () @InternalStableApi - def onRecoveryFailed(@unused context: ActorContext[_], @unused reason: Throwable, @unused event: Option[Any]): Unit = + def onRecoveryFailed(@nowarn("msg=never used") context: ActorContext[_], @nowarn("msg=never used") reason: Throwable, + @nowarn("msg=never used") event: Option[Any]): Unit = () override def onMessage(msg: InternalProtocol): Behavior[InternalProtocol] = { diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingSnapshot.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingSnapshot.scala index 866a7e49bf..4d3edb442b 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingSnapshot.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/ReplayingSnapshot.scala @@ -13,6 +13,8 @@ package org.apache.pekko.persistence.typed.internal +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.typed.Behavior import pekko.actor.typed.internal.PoisonPill @@ -24,7 +26,6 @@ import pekko.persistence.SnapshotProtocol.LoadSnapshotFailed import pekko.persistence.SnapshotProtocol.LoadSnapshotResult import pekko.persistence.typed.{ RecoveryFailed, ReplicaId } import pekko.persistence.typed.internal.EventSourcedBehaviorImpl.{ GetSeenSequenceNr, GetState } -import pekko.util.unused /** * INTERNAL API @@ -119,9 +120,10 @@ private[pekko] class ReplayingSnapshot[C, E, S](override val setup: BehaviorSetu } @InternalStableApi - def onRecoveryStart(@unused context: ActorContext[_]): Unit = () + def onRecoveryStart(@nowarn("msg=never used") context: ActorContext[_]): Unit = () @InternalStableApi - def onRecoveryFailed(@unused context: ActorContext[_], @unused reason: Throwable): Unit = () + def onRecoveryFailed(@nowarn("msg=never used") context: ActorContext[_], @nowarn("msg=never used") reason: Throwable) + : Unit = () private def onRecoveryTick(snapshot: Boolean): Behavior[InternalProtocol] = if (snapshot) { diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/RequestingRecoveryPermit.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/RequestingRecoveryPermit.scala index d3bf7a6076..c0ac940b73 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/RequestingRecoveryPermit.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/RequestingRecoveryPermit.scala @@ -13,12 +13,13 @@ package org.apache.pekko.persistence.typed.internal +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.typed.Behavior import pekko.actor.typed.internal.PoisonPill import pekko.actor.typed.scaladsl.{ ActorContext, Behaviors } import pekko.annotation.{ InternalApi, InternalStableApi } -import pekko.util.unused /** * INTERNAL API @@ -78,7 +79,7 @@ private[pekko] class RequestingRecoveryPermit[C, E, S](override val setup: Behav } @InternalStableApi - def onRequestingRecoveryPermit(@unused context: ActorContext[_]): Unit = () + def onRequestingRecoveryPermit(@nowarn("msg=never used") context: ActorContext[_]): Unit = () private def becomeReplaying(receivedPoisonPill: Boolean): Behavior[InternalProtocol] = { setup.internalLogger.debug(s"Initializing snapshot recovery: {}", setup.recovery) diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/Running.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/Running.scala index 2aff1b37ad..ae6c8c80e4 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/Running.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/Running.scala @@ -19,6 +19,7 @@ import java.time.ZoneId import java.time.format.DateTimeFormatter import java.util.concurrent.atomic.AtomicReference +import scala.annotation.nowarn import scala.annotation.tailrec import scala.collection.immutable @@ -74,7 +75,6 @@ import pekko.stream.scaladsl.Source import pekko.stream.typed.scaladsl.ActorFlow import pekko.util.OptionVal import pekko.util.Timeout -import pekko.util.unused /** * INTERNAL API @@ -1062,16 +1062,18 @@ private[pekko] object Running { @InternalStableApi private[pekko] def onWriteFailed( - @unused ctx: ActorContext[_], - @unused reason: Throwable, - @unused event: PersistentRepr): Unit = () + @nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") reason: Throwable, + @nowarn("msg=never used") event: PersistentRepr): Unit = () @InternalStableApi private[pekko] def onWriteRejected( - @unused ctx: ActorContext[_], - @unused reason: Throwable, - @unused event: PersistentRepr): Unit = () + @nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") reason: Throwable, + @nowarn("msg=never used") event: PersistentRepr): Unit = () @InternalStableApi - private[pekko] def onWriteSuccess(@unused ctx: ActorContext[_], @unused event: PersistentRepr): Unit = () + private[pekko] def onWriteSuccess(@nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") event: PersistentRepr): Unit = () @InternalStableApi - private[pekko] def onWriteDone(@unused ctx: ActorContext[_], @unused event: PersistentRepr): Unit = () + private[pekko] def onWriteDone(@nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") event: PersistentRepr): Unit = () } diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/javadsl/EventSourcedBehavior.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/javadsl/EventSourcedBehavior.scala index 6d8d88c344..a003ae5596 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/javadsl/EventSourcedBehavior.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/javadsl/EventSourcedBehavior.scala @@ -16,6 +16,7 @@ package org.apache.pekko.persistence.typed.javadsl import java.util.Collections import java.util.Optional +import scala.annotation.nowarn import scala.jdk.OptionConverters._ import org.apache.pekko @@ -28,7 +29,6 @@ import pekko.annotation.InternalApi import pekko.persistence.typed._ import pekko.persistence.typed.EventAdapter import pekko.persistence.typed.internal._ -import pekko.util.unused import com.typesafe.config.Config @@ -161,7 +161,8 @@ abstract class EventSourcedBehavior[Command, Event, State] private[pekko] ( * @return `true` if snapshot should be saved at the given `state`, `event` and `sequenceNr` when the event has * been successfully persisted */ - def shouldSnapshot(@unused state: State, @unused event: Event, @unused sequenceNr: Long): Boolean = false + def shouldSnapshot(@nowarn("msg=never used") state: State, @nowarn("msg=never used") event: Event, + @nowarn("msg=never used") sequenceNr: Long): Boolean = false /** * Criteria for retention/deletion of snapshots and events. @@ -178,7 +179,7 @@ abstract class EventSourcedBehavior[Command, Event, State] private[pekko] ( /** * The `tagger` function should give event tags, which will be used in persistence query */ - def tagsFor(@unused event: Event): java.util.Set[String] = Collections.emptySet() + def tagsFor(@nowarn("msg=never used") event: Event): java.util.Set[String] = Collections.emptySet() /** * Transform the event in another type before giving to the journal. Can be used to wrap events diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateBehaviorImpl.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateBehaviorImpl.scala index 89497c45db..5e7a95db5c 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateBehaviorImpl.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateBehaviorImpl.scala @@ -13,6 +13,8 @@ package org.apache.pekko.persistence.typed.state.internal +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.typed import pekko.actor.typed.ActorRef @@ -32,7 +34,6 @@ import pekko.persistence.state.scaladsl.GetObjectResult import pekko.persistence.typed.PersistenceId import pekko.persistence.typed.SnapshotAdapter import pekko.persistence.typed.state.scaladsl._ -import pekko.util.unused import org.slf4j.LoggerFactory @@ -158,7 +159,7 @@ private[pekko] final case class DurableStateBehaviorImpl[Command, State]( } @InternalStableApi - private[pekko] def initialize(@unused context: ActorContext[_]): Unit = () + private[pekko] def initialize(@nowarn("msg=never used") context: ActorContext[_]): Unit = () override def receiveSignal(handler: PartialFunction[(State, Signal), Unit]): DurableStateBehavior[Command, State] = copy(signalHandler = handler) diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateStoreInteractions.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateStoreInteractions.scala index 0063e88fc2..56e8fe8627 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateStoreInteractions.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateStoreInteractions.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.typed.state.internal +import scala.annotation.nowarn import scala.util.Failure import scala.util.Success @@ -28,7 +29,6 @@ import pekko.annotation.InternalApi import pekko.annotation.InternalStableApi import pekko.persistence._ import pekko.persistence.state.scaladsl.GetObjectResult -import pekko.util.unused /** INTERNAL API */ @InternalApi @@ -86,9 +86,11 @@ private[pekko] trait DurableStateStoreInteractions[C, S] { // FIXME These hook methods are for Telemetry. What more parameters are needed? persistenceId? @InternalStableApi - private[pekko] def onWriteInitiated(@unused ctx: ActorContext[_], @unused cmd: Any): Unit = () + private[pekko] def onWriteInitiated(@nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") cmd: Any): Unit = () - private[pekko] def onDeleteInitiated(@unused ctx: ActorContext[_], @unused cmd: Any): Unit = () + private[pekko] def onDeleteInitiated(@nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") cmd: Any): Unit = () protected def requestRecoveryPermit(): Unit = { setup.persistence.recoveryPermitter.tell(RecoveryPermitter.RequestRecoveryPermit, setup.selfClassic) diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Recovering.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Recovering.scala index 1431a0c1da..016282d796 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Recovering.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Recovering.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.typed.state.internal +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko @@ -32,7 +33,6 @@ import pekko.persistence.typed.state.RecoveryFailed import pekko.persistence.typed.state.internal.DurableStateBehaviorImpl.GetState import pekko.persistence.typed.state.internal.Running.WithRevisionAccessible import pekko.util.PrettyDuration._ -import pekko.util.unused /** * INTERNAL API @@ -136,11 +136,12 @@ private[pekko] class Recovering[C, S]( } @InternalStableApi - def onRecoveryStart(@unused context: ActorContext[_]): Unit = () + def onRecoveryStart(@nowarn("msg=never used") context: ActorContext[_]): Unit = () @InternalStableApi - def onRecoveryComplete(@unused context: ActorContext[_]): Unit = () + def onRecoveryComplete(@nowarn("msg=never used") context: ActorContext[_]): Unit = () @InternalStableApi - def onRecoveryFailed(@unused context: ActorContext[_], @unused reason: Throwable): Unit = () + def onRecoveryFailed(@nowarn("msg=never used") context: ActorContext[_], @nowarn("msg=never used") reason: Throwable) + : Unit = () private def onRecoveryTimeout(): Behavior[InternalProtocol] = { val ex = new RecoveryTimedOut(s"Recovery timed out, didn't get state within ${setup.settings.recoveryTimeout}") diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/RequestingRecoveryPermit.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/RequestingRecoveryPermit.scala index 1b24c908f2..9ae4282900 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/RequestingRecoveryPermit.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/RequestingRecoveryPermit.scala @@ -13,12 +13,13 @@ package org.apache.pekko.persistence.typed.state.internal +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.typed.Behavior import pekko.actor.typed.internal.PoisonPill import pekko.actor.typed.scaladsl.{ ActorContext, Behaviors } import pekko.annotation.{ InternalApi, InternalStableApi } -import pekko.util.unused /** * INTERNAL API @@ -77,7 +78,7 @@ private[pekko] class RequestingRecoveryPermit[C, S](override val setup: Behavior } @InternalStableApi - def onRequestingRecoveryPermit(@unused context: ActorContext[_]): Unit = () + def onRequestingRecoveryPermit(@nowarn("msg=never used") context: ActorContext[_]): Unit = () private def becomeRecovering(receivedPoisonPill: Boolean): Behavior[InternalProtocol] = { setup.internalLogger.debug(s"Initializing recovery") diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Running.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Running.scala index 549946e851..91d39fdad4 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Running.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/Running.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.typed.state.internal +import scala.annotation.nowarn import scala.annotation.tailrec import scala.collection.immutable @@ -29,7 +30,6 @@ import pekko.annotation.InternalApi import pekko.annotation.InternalStableApi import pekko.persistence.typed.state.internal.DurableStateBehaviorImpl.GetState import pekko.persistence.typed.state.scaladsl.Effect -import pekko.util.unused /** * INTERNAL API @@ -73,7 +73,8 @@ private[pekko] object Running { def nextRevision(): RunningState[State, Command] = copy(revision = revision + 1) - def applyState(@unused setup: BehaviorSetup[Command, State], updated: State): RunningState[State, Command] = { + def applyState(@nowarn("msg=never used") setup: BehaviorSetup[Command, State], updated: State) + : RunningState[State, Command] = { copy(state = updated) } } @@ -360,8 +361,9 @@ private[pekko] object Running { } @InternalStableApi - private[pekko] def onWriteFailed(@unused ctx: ActorContext[_], @unused reason: Throwable): Unit = () + private[pekko] def onWriteFailed(@nowarn("msg=never used") ctx: ActorContext[_], + @nowarn("msg=never used") reason: Throwable): Unit = () @InternalStableApi - private[pekko] def onWriteSuccess(@unused ctx: ActorContext[_]): Unit = () + private[pekko] def onWriteSuccess(@nowarn("msg=never used") ctx: ActorContext[_]): Unit = () } diff --git a/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSMBase.scala b/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSMBase.scala index c83f0c930c..0b4f894437 100644 --- a/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSMBase.scala +++ b/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSMBase.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.fsm +import scala.annotation.nowarn import scala.collection.mutable import scala.concurrent.duration.FiniteDuration import scala.jdk.DurationConverters._ @@ -24,7 +25,6 @@ import pekko.actor._ import pekko.japi.function.{ Effect, Function2, Predicate, Predicate2, Procedure, Procedure2, Procedure3 } import pekko.japi.pf.{ FSMTransitionHandlerBuilder, UnitMatch, UnitPFBuilder } import pekko.routing.{ Deafen, Listen, Listeners } -import pekko.util.unused /** * Finite State Machine actor trait. Use as follows: @@ -537,7 +537,7 @@ trait PersistentFSMBase[S, D, E] extends Actor with Listeners with ActorLogging processEvent(event, source) } - private[pekko] def processEvent(event: Event, @unused source: AnyRef): Unit = { + private[pekko] def processEvent(event: Event, @nowarn("msg=never used") source: AnyRef): Unit = { val stateFunc = stateFunctions(currentState.stateName) val nextState = if (stateFunc.isDefinedAt(event)) { stateFunc(event) diff --git a/persistence/src/main/scala/org/apache/pekko/persistence/journal/leveldb/LeveldbIdMapping.scala b/persistence/src/main/scala/org/apache/pekko/persistence/journal/leveldb/LeveldbIdMapping.scala index 99178a2982..30339af560 100644 --- a/persistence/src/main/scala/org/apache/pekko/persistence/journal/leveldb/LeveldbIdMapping.scala +++ b/persistence/src/main/scala/org/apache/pekko/persistence/journal/leveldb/LeveldbIdMapping.scala @@ -13,12 +13,13 @@ package org.apache.pekko.persistence.journal.leveldb +import scala.annotation.nowarn + import org.iq80.leveldb.DBIterator import org.apache.pekko import pekko.actor.Actor import pekko.util.ByteString.UTF_8 -import pekko.util.unused /** * INTERNAL API. @@ -80,7 +81,7 @@ private[persistence] trait LeveldbIdMapping extends Actor { this: LeveldbStore = numericId } - override protected def newPersistenceIdAdded(@unused id: String): Unit = () + override protected def newPersistenceIdAdded(@nowarn("msg=never used") id: String): Unit = () override def preStart(): Unit = { idMap = readIdMap() diff --git a/persistence/src/main/scala/org/apache/pekko/persistence/state/DurableStateStoreRegistry.scala b/persistence/src/main/scala/org/apache/pekko/persistence/state/DurableStateStoreRegistry.scala index 874a6ec7cc..c8d88f4d7c 100644 --- a/persistence/src/main/scala/org/apache/pekko/persistence/state/DurableStateStoreRegistry.scala +++ b/persistence/src/main/scala/org/apache/pekko/persistence/state/DurableStateStoreRegistry.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence.state +import scala.annotation.nowarn import scala.reflect.ClassTag import org.apache.pekko @@ -27,7 +28,6 @@ import pekko.persistence.Persistence import pekko.persistence.PersistencePlugin import pekko.persistence.PluginProvider import pekko.persistence.state.scaladsl.DurableStateStore -import pekko.util.unused import com.typesafe.config.Config @@ -96,7 +96,7 @@ class DurableStateStoreRegistry(system: ExtendedActorSystem) * configuration entry. */ final def getDurableStateStoreFor[T <: javadsl.DurableStateStore[_]]( - @unused clazz: Class[T], // FIXME generic Class could be problematic in Java + @nowarn("msg=never used") clazz: Class[T], // FIXME generic Class could be problematic in Java pluginId: String): T = { pluginFor(pluginIdOrDefault(pluginId), pluginConfig(pluginId)).javadslPlugin.asInstanceOf[T] } diff --git a/persistence/src/test/scala/org/apache/pekko/persistence/EndToEndEventAdapterSpec.scala b/persistence/src/test/scala/org/apache/pekko/persistence/EndToEndEventAdapterSpec.scala index f1fc8bb47f..9620edc3ad 100644 --- a/persistence/src/test/scala/org/apache/pekko/persistence/EndToEndEventAdapterSpec.scala +++ b/persistence/src/test/scala/org/apache/pekko/persistence/EndToEndEventAdapterSpec.scala @@ -15,6 +15,7 @@ package org.apache.pekko.persistence import java.io.File +import scala.annotation.nowarn import scala.concurrent.Await import scala.concurrent.duration._ @@ -24,7 +25,6 @@ import org.apache.pekko import pekko.actor._ import pekko.persistence.journal.{ EventAdapter, EventSeq } import pekko.testkit.TestProbe -import pekko.util.unused import org.scalatest.BeforeAndAfterAll import org.scalatest.matchers.should.Matchers @@ -42,7 +42,7 @@ object EndToEndEventAdapterSpec { case class JSON(payload: Any) - class AEndToEndAdapter(@unused system: ExtendedActorSystem) extends EventAdapter { + class AEndToEndAdapter(@nowarn("msg=never used") system: ExtendedActorSystem) extends EventAdapter { override def manifest(event: Any): String = event.getClass.getCanonicalName override def toJournal(event: Any): Any = @@ -55,7 +55,7 @@ object EndToEndEventAdapterSpec { case _ => EventSeq.empty } } - class NewAEndToEndAdapter(@unused system: ExtendedActorSystem) extends EventAdapter { + class NewAEndToEndAdapter(@nowarn("msg=never used") system: ExtendedActorSystem) extends EventAdapter { override def manifest(event: Any): String = event.getClass.getCanonicalName override def toJournal(event: Any): Any = @@ -68,7 +68,7 @@ object EndToEndEventAdapterSpec { case _ => EventSeq.empty } } - class BEndToEndAdapter(@unused system: ExtendedActorSystem) extends EventAdapter { + class BEndToEndAdapter(@nowarn("msg=never used") system: ExtendedActorSystem) extends EventAdapter { override def manifest(event: Any): String = event.getClass.getCanonicalName override def toJournal(event: Any): Any = @@ -81,7 +81,7 @@ object EndToEndEventAdapterSpec { case _ => EventSeq.empty } } - class NewBEndToEndAdapter(@unused system: ExtendedActorSystem) extends EventAdapter { + class NewBEndToEndAdapter(@nowarn("msg=never used") system: ExtendedActorSystem) extends EventAdapter { override def manifest(event: Any): String = event.getClass.getCanonicalName override def toJournal(event: Any): Any = @@ -95,7 +95,8 @@ object EndToEndEventAdapterSpec { } } - class EndToEndAdapterActor(name: String, override val journalPluginId: String, @unused probe: Option[ActorRef]) + class EndToEndAdapterActor(name: String, override val journalPluginId: String, + @nowarn("msg=never used") probe: Option[ActorRef]) extends NamedPersistentActor(name) with PersistentActor { diff --git a/persistence/src/test/scala/org/apache/pekko/persistence/LoadPluginSpec.scala b/persistence/src/test/scala/org/apache/pekko/persistence/LoadPluginSpec.scala index 91a351cf9b..f77047c975 100644 --- a/persistence/src/test/scala/org/apache/pekko/persistence/LoadPluginSpec.scala +++ b/persistence/src/test/scala/org/apache/pekko/persistence/LoadPluginSpec.scala @@ -13,11 +13,12 @@ package org.apache.pekko.persistence +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.Actor import pekko.persistence.journal.inmem.InmemJournal import pekko.testkit.ImplicitSender -import pekko.util.unused import com.typesafe.config.Config @@ -34,7 +35,8 @@ object LoadPluginSpec { object JournalWithStartupNotification { final case class Started(configPath: String) } - class JournalWithStartupNotification(@unused config: Config, configPath: String) extends InmemJournal { + class JournalWithStartupNotification(@nowarn("msg=never used") config: Config, configPath: String) + extends InmemJournal { context.system.eventStream.publish(JournalWithStartupNotification.Started(configPath)) } } diff --git a/persistence/src/test/scala/org/apache/pekko/persistence/PersistentActorStashingSpec.scala b/persistence/src/test/scala/org/apache/pekko/persistence/PersistentActorStashingSpec.scala index c9b3936f27..bdb5c5544c 100644 --- a/persistence/src/test/scala/org/apache/pekko/persistence/PersistentActorStashingSpec.scala +++ b/persistence/src/test/scala/org/apache/pekko/persistence/PersistentActorStashingSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.persistence +import scala.annotation.nowarn import scala.concurrent.duration._ import scala.reflect.ClassTag @@ -21,7 +22,6 @@ import pekko.actor.{ Actor, ActorRef, OneForOneStrategy, Props } import pekko.actor.SupervisorStrategy.Resume import pekko.persistence.journal.SteppingInmemJournal import pekko.testkit.ImplicitSender -import pekko.util.unused import com.typesafe.config.Config @@ -185,7 +185,7 @@ object PersistentActorStashingSpec { case _ => // ignore } - def stashWithinHandler(@unused evt: Evt) = { + def stashWithinHandler(@nowarn("msg=never used") evt: Evt) = { stash() } diff --git a/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/NewRemoteActorSpec.scala b/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/NewRemoteActorSpec.scala index ae840a77f6..c2fc7209ed 100644 --- a/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/NewRemoteActorSpec.scala +++ b/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/NewRemoteActorSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.remote +import scala.annotation.nowarn import scala.concurrent.duration._ import testkit.MultiNodeConfig @@ -22,7 +23,6 @@ import pekko.actor.Actor import pekko.actor.ActorRef import pekko.actor.Props import pekko.actor.Terminated -import pekko.util.unused import com.typesafe.config.ConfigFactory @@ -59,7 +59,7 @@ object NewRemoteActorSpec { } } - class SomeActorWithParam(@unused ignored: String) extends Actor { + class SomeActorWithParam(@nowarn("msg=never used") ignored: String) extends Actor { def receive = { case "identify" => sender() ! self } diff --git a/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/TransportFailSpec.scala b/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/TransportFailSpec.scala index b4b4af8002..4a751ac355 100644 --- a/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/TransportFailSpec.scala +++ b/remote-tests/src/multi-jvm/scala/org/apache/pekko/remote/TransportFailSpec.scala @@ -29,7 +29,6 @@ import pekko.event.EventStream import pekko.remote.testconductor.RoleName import pekko.remote.testkit.MultiNodeConfig import pekko.testkit._ -import pekko.util.unused import com.typesafe.config.Config import com.typesafe.config.ConfigFactory @@ -71,7 +70,8 @@ object TransportFailSpec { private val fdAvailable = new AtomicBoolean(true) // FD that will fail when `fdAvailable` flag is false - class TestFailureDetector(@unused config: Config, @unused ev: EventStream) extends FailureDetector { + class TestFailureDetector(@nowarn("msg=never used") config: Config, @nowarn("msg=never used") ev: EventStream) + extends FailureDetector { @volatile private var active = false override def heartbeat(): Unit = { diff --git a/remote/src/main/scala/org/apache/pekko/remote/MessageSerializer.scala b/remote/src/main/scala/org/apache/pekko/remote/MessageSerializer.scala index 171a2d4116..6fada47d76 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/MessageSerializer.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/MessageSerializer.scala @@ -13,6 +13,7 @@ package org.apache.pekko.remote +import scala.annotation.nowarn import scala.util.control.NonFatal import org.apache.pekko @@ -22,7 +23,6 @@ import pekko.protobufv3.internal.ByteString import pekko.remote.WireFormats._ import pekko.remote.artery.{ EnvelopeBuffer, HeaderBuilder, OutboundEnvelope } import pekko.serialization._ -import pekko.util.unused /** * INTERNAL API @@ -103,8 +103,8 @@ private[pekko] object MessageSerializer { } def deserializeForArtery( - @unused system: ExtendedActorSystem, - @unused originUid: Long, + @nowarn("msg=never used") system: ExtendedActorSystem, + @nowarn("msg=never used") originUid: Long, serialization: Serialization, serializer: Int, classManifest: String, diff --git a/remote/src/main/scala/org/apache/pekko/remote/RemoteActorRefProvider.scala b/remote/src/main/scala/org/apache/pekko/remote/RemoteActorRefProvider.scala index 9d1245be07..ddd647925b 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/RemoteActorRefProvider.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/RemoteActorRefProvider.scala @@ -46,7 +46,6 @@ import pekko.remote.serialization.ActorRefResolveThreadLocalCache import pekko.serialization.Serialization import pekko.util.ErrorMessages import pekko.util.OptionVal -import pekko.util.unused /** * INTERNAL API @@ -373,7 +372,8 @@ private[pekko] class RemoteActorRefProvider( warnOnUnsafe(s"Remote deploy of [$path] is not allowed, falling back to local.") /** Override to add any additional checks if using `RemoteActorRefProvider` as a superclass. */ - protected def shouldCreateRemoteActorRef(@unused system: ActorSystem, @unused address: Address): Boolean = true + protected def shouldCreateRemoteActorRef(@nowarn("msg=never used") system: ActorSystem, + @nowarn("msg=never used") address: Address): Boolean = true def actorOf( system: ActorSystemImpl, diff --git a/remote/src/main/scala/org/apache/pekko/remote/RemoteTransport.scala b/remote/src/main/scala/org/apache/pekko/remote/RemoteTransport.scala index 93da52c9da..2977c33466 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/RemoteTransport.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/RemoteTransport.scala @@ -13,6 +13,7 @@ package org.apache.pekko.remote +import scala.annotation.nowarn import scala.collection.immutable import scala.concurrent.Future import scala.util.control.NoStackTrace @@ -23,7 +24,7 @@ import pekko.PekkoException import pekko.actor._ import pekko.annotation.InternalStableApi import pekko.event.LoggingAdapter -import pekko.util.{ unused, OptionVal } +import pekko.util.OptionVal /** * RemoteTransportException represents a general failure within a RemoteTransport, @@ -93,7 +94,7 @@ private[pekko] abstract class RemoteTransport(val system: ExtendedActorSystem, v * @param cmd Command message to send to the transports. * @return A Future that indicates when the message was successfully handled or dropped. */ - def managementCommand(@unused cmd: Any): Future[Boolean] = { Future.successful(false) } + def managementCommand(@nowarn("msg=never used") cmd: Any): Future[Boolean] = { Future.successful(false) } /** * A Logger that can be used to log issues that may occur diff --git a/remote/src/main/scala/org/apache/pekko/remote/RemoteWatcher.scala b/remote/src/main/scala/org/apache/pekko/remote/RemoteWatcher.scala index ac2088c92b..84bcadcf42 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/RemoteWatcher.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/RemoteWatcher.scala @@ -26,7 +26,6 @@ import pekko.dispatch.sysmsg.{ DeathWatchNotification, Watch } import pekko.event.AddressTerminatedTopic import pekko.remote.artery.ArteryMessage import pekko.remote.artery.ArteryTransport -import pekko.util.unused /** * INTERNAL API @@ -219,7 +218,7 @@ private[pekko] class RemoteWatcher( * Returns true if either has cluster or `pekko.remote.use-unsafe-remote-features-outside-cluster` * is enabled. Can be overridden when using RemoteWatcher as a superclass. */ - protected def shouldWatch(@unused watchee: InternalActorRef): Boolean = { + protected def shouldWatch(@nowarn("msg=never used") watchee: InternalActorRef): Boolean = { // In this it is unnecessary if only created by RARP, but cluster needs it. // Cleaner than overriding Cluster watcher addWatch/removeWatch just for one boolean test remoteProvider.remoteSettings.UseUnsafeRemoteFeaturesWithoutCluster diff --git a/remote/src/main/scala/org/apache/pekko/remote/artery/Codecs.scala b/remote/src/main/scala/org/apache/pekko/remote/artery/Codecs.scala index e790ad5995..3f9eb5957d 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/artery/Codecs.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/artery/Codecs.scala @@ -15,6 +15,7 @@ package org.apache.pekko.remote.artery import java.util.concurrent.TimeUnit +import scala.annotation.nowarn import scala.concurrent.Future import scala.concurrent.Promise import scala.concurrent.duration._ @@ -44,7 +45,6 @@ import pekko.serialization.Serializers import pekko.stream._ import pekko.stream.stage._ import pekko.util.OptionVal -import pekko.util.unused /** * INTERNAL API @@ -65,7 +65,7 @@ private[remote] class Encoder( system: ExtendedActorSystem, outboundEnvelopePool: ObjectPool[ReusableOutboundEnvelope], bufferPool: EnvelopeBufferPool, - @unused streamId: Int, + @nowarn("msg=never used") streamId: Int, debugLogSend: Boolean, version: Byte) extends GraphStageWithMaterializedValue[ @@ -643,7 +643,7 @@ private[remote] class Decoder( * INTERNAL API */ private[remote] class Deserializer( - @unused inboundContext: InboundContext, + @nowarn("msg=never used") inboundContext: InboundContext, system: ExtendedActorSystem, bufferPool: EnvelopeBufferPool) extends GraphStage[FlowShape[InboundEnvelope, InboundEnvelope]] { diff --git a/remote/src/main/scala/org/apache/pekko/remote/artery/Handshake.scala b/remote/src/main/scala/org/apache/pekko/remote/artery/Handshake.scala index b5c953f66e..c169056805 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/artery/Handshake.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/artery/Handshake.scala @@ -13,6 +13,7 @@ package org.apache.pekko.remote.artery +import scala.annotation.nowarn import scala.concurrent.ExecutionContext import scala.concurrent.Future import scala.concurrent.duration._ @@ -29,7 +30,6 @@ import pekko.stream.Inlet import pekko.stream.Outlet import pekko.stream.stage._ import pekko.util.OptionVal -import pekko.util.unused /** * INTERNAL API @@ -61,7 +61,7 @@ private[remote] object OutboundHandshake { * INTERNAL API */ private[remote] class OutboundHandshake( - @unused system: ActorSystem, + @nowarn("msg=never used") system: ActorSystem, outboundContext: OutboundContext, outboundEnvelopePool: ObjectPool[ReusableOutboundEnvelope], timeout: FiniteDuration, diff --git a/remote/src/main/scala/org/apache/pekko/remote/artery/RemoteInstrument.scala b/remote/src/main/scala/org/apache/pekko/remote/artery/RemoteInstrument.scala index 771c2fbc1d..089a5622b3 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/artery/RemoteInstrument.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/artery/RemoteInstrument.scala @@ -16,6 +16,7 @@ package org.apache.pekko.remote.artery import java.nio.ByteBuffer import java.util.concurrent.ConcurrentHashMap +import scala.annotation.nowarn import scala.annotation.tailrec import scala.util.control.NonFatal @@ -30,7 +31,6 @@ import pekko.event.Logging import pekko.event.LoggingAdapter import pekko.remote.RemoteActorRefProvider import pekko.util.OptionVal -import pekko.util.unused /** * INTERNAL API @@ -409,7 +409,7 @@ private[remote] object RemoteInstruments { def getLength(kl: Int): Int = kl & lengthMask @InternalStableApi - def create(system: ExtendedActorSystem, @unused log: LoggingAdapter): Vector[RemoteInstrument] = { + def create(system: ExtendedActorSystem, @nowarn("msg=never used") log: LoggingAdapter): Vector[RemoteInstrument] = { val c = system.settings.config val path = "pekko.remote.artery.advanced.instruments" import scala.jdk.CollectionConverters._ diff --git a/remote/src/main/scala/org/apache/pekko/remote/artery/compress/InboundCompressions.scala b/remote/src/main/scala/org/apache/pekko/remote/artery/compress/InboundCompressions.scala index 710dc8debc..4238af2490 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/artery/compress/InboundCompressions.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/artery/compress/InboundCompressions.scala @@ -15,6 +15,7 @@ package org.apache.pekko.remote.artery.compress import java.util.function.LongFunction +import scala.annotation.nowarn import scala.annotation.tailrec import org.agrona.collections.Long2ObjectHashMap @@ -28,7 +29,6 @@ import pekko.event.Logging import pekko.event.LoggingAdapter import pekko.remote.artery._ import pekko.util.OptionVal -import pekko.util.unused /** * INTERNAL API @@ -441,7 +441,7 @@ private[remote] abstract class InboundCompression[T >: Null]( * Add `n` occurrence for the given key and call `heavyHittedDetected` if element has become a heavy hitter. * Empty keys are omitted. */ - def increment(@unused remoteAddress: Address, value: T, n: Long): Unit = { + def increment(@nowarn("msg=never used") remoteAddress: Address, value: T, n: Long): Unit = { val count = cms.addObjectAndEstimateCount(value, n) addAndCheckIfheavyHitterDetected(value, count) alive = true diff --git a/remote/src/main/scala/org/apache/pekko/remote/serialization/ActorRefResolveCache.scala b/remote/src/main/scala/org/apache/pekko/remote/serialization/ActorRefResolveCache.scala index bb901cebe4..18dbc3c429 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/serialization/ActorRefResolveCache.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/serialization/ActorRefResolveCache.scala @@ -13,6 +13,7 @@ package org.apache.pekko.remote.serialization +import scala.annotation.nowarn import scala.reflect.ClassTag import org.apache.pekko @@ -29,7 +30,6 @@ import pekko.remote.RemoteActorRef import pekko.remote.RemoteActorRefProvider import pekko.remote.artery.LruBoundedCache import pekko.util.Unsafe -import pekko.util.unused /** * INTERNAL API: Thread local cache per actor system @@ -64,7 +64,7 @@ private[pekko] class ActorRefResolveThreadLocalCache(val system: ExtendedActorSy override def initialValue: ActorRefResolveCache = new ActorRefResolveCache(provider) } - def threadLocalCache(@unused provider: RemoteActorRefProvider): ActorRefResolveCache = + def threadLocalCache(@nowarn("msg=never used") provider: RemoteActorRefProvider): ActorRefResolveCache = current.get } diff --git a/remote/src/main/scala/org/apache/pekko/remote/transport/Transport.scala b/remote/src/main/scala/org/apache/pekko/remote/transport/Transport.scala index 83f4570f6c..6244ed66d4 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/transport/Transport.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/transport/Transport.scala @@ -23,7 +23,7 @@ import pekko.actor.{ ActorRef, Address, NoSerializationVerificationNeeded } import pekko.actor.DeadLetterSuppression import pekko.event.LoggingAdapter import pekko.remote.transport.AssociationHandle.HandleEventListener -import pekko.util.{ unused, ByteString } +import pekko.util.ByteString @deprecated("Classic remoting is deprecated, use Artery", "Akka 2.6.0") object Transport { @@ -158,7 +158,7 @@ trait Transport { * @param cmd Command message to the transport * @return Future that succeeds when the command was handled or dropped */ - def managementCommand(@unused cmd: Any): Future[Boolean] = { Future.successful(false) } + def managementCommand(@nowarn("msg=never used") cmd: Any): Future[Boolean] = { Future.successful(false) } } diff --git a/remote/src/main/scala/org/apache/pekko/remote/transport/netty/NettyHelpers.scala b/remote/src/main/scala/org/apache/pekko/remote/transport/netty/NettyHelpers.scala index f1bcbe6697..4e2bbcc710 100644 --- a/remote/src/main/scala/org/apache/pekko/remote/transport/netty/NettyHelpers.scala +++ b/remote/src/main/scala/org/apache/pekko/remote/transport/netty/NettyHelpers.scala @@ -20,7 +20,6 @@ import scala.util.control.NonFatal import org.apache.pekko import pekko.PekkoException -import pekko.util.unused import io.netty.buffer.ByteBuf import io.netty.channel.{ ChannelHandlerContext, ChannelInboundHandlerAdapter } @@ -30,15 +29,17 @@ import io.netty.channel.{ ChannelHandlerContext, ChannelInboundHandlerAdapter } */ private[netty] trait NettyHelpers { - protected def onConnect(@unused ctx: ChannelHandlerContext): Unit = () + protected def onConnect(@nowarn("msg=never used") ctx: ChannelHandlerContext): Unit = () - protected def onDisconnect(@unused ctx: ChannelHandlerContext): Unit = () + protected def onDisconnect(@nowarn("msg=never used") ctx: ChannelHandlerContext): Unit = () - protected def onOpen(@unused ctx: ChannelHandlerContext): Unit = () + protected def onOpen(@nowarn("msg=never used") ctx: ChannelHandlerContext): Unit = () - protected def onMessage(@unused ctx: ChannelHandlerContext, @unused msg: ByteBuf): Unit = () + protected def onMessage(@nowarn("msg=never used") ctx: ChannelHandlerContext, @nowarn("msg=never used") msg: ByteBuf) + : Unit = () - protected def onException(@unused ctx: ChannelHandlerContext, @unused e: Throwable): Unit = () + protected def onException(@nowarn("msg=never used") ctx: ChannelHandlerContext, + @nowarn("msg=never used") e: Throwable): Unit = () final protected def transformException(ctx: ChannelHandlerContext, ex: Throwable): Unit = { val cause = if (ex ne null) ex else new PekkoException("Unknown cause") diff --git a/remote/src/test/scala/org/apache/pekko/remote/TransientSerializationErrorSpec.scala b/remote/src/test/scala/org/apache/pekko/remote/TransientSerializationErrorSpec.scala index 7f9ef20085..9f0b37ca6a 100644 --- a/remote/src/test/scala/org/apache/pekko/remote/TransientSerializationErrorSpec.scala +++ b/remote/src/test/scala/org/apache/pekko/remote/TransientSerializationErrorSpec.scala @@ -15,11 +15,12 @@ package org.apache.pekko.remote import java.io.NotSerializableException +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.{ ActorSystem, ExtendedActorSystem, RootActorPath } import pekko.serialization.SerializerWithStringManifest import pekko.testkit.{ PekkoSpec, TestActors, TestKit } -import pekko.util.unused import com.typesafe.config.{ Config, ConfigFactory } @@ -31,7 +32,7 @@ object TransientSerializationErrorSpec { object NotDeserializable object IllegalOnDeserialize - class TestSerializer(@unused system: ExtendedActorSystem) extends SerializerWithStringManifest { + class TestSerializer(@nowarn("msg=never used") system: ExtendedActorSystem) extends SerializerWithStringManifest { def identifier: Int = 666 def manifest(o: AnyRef): String = o match { case ManifestNotSerializable => throw new NotSerializableException() diff --git a/remote/src/test/scala/org/apache/pekko/remote/artery/RemoteInstrumentsSerializationSpec.scala b/remote/src/test/scala/org/apache/pekko/remote/artery/RemoteInstrumentsSerializationSpec.scala index e03e31cc95..14f14db866 100644 --- a/remote/src/test/scala/org/apache/pekko/remote/artery/RemoteInstrumentsSerializationSpec.scala +++ b/remote/src/test/scala/org/apache/pekko/remote/artery/RemoteInstrumentsSerializationSpec.scala @@ -17,6 +17,7 @@ import java.nio.{ ByteBuffer, CharBuffer } import java.nio.ByteOrder import java.nio.charset.StandardCharsets +import scala.annotation.nowarn import scala.concurrent.duration._ import org.apache.pekko @@ -24,7 +25,7 @@ import pekko.actor.{ ActorRef, ActorSystem, ExtendedActorSystem, InternalActorRe import pekko.event._ import pekko.testkit.{ EventFilter, PekkoSpec, TestProbe } import pekko.testkit.TestEvent.Mute -import pekko.util.{ unused, OptionVal } +import pekko.util.OptionVal class RemoteInstrumentsSerializationSpec extends PekkoSpec("pekko.loglevel = DEBUG") { import RemoteInstrumentsSerializationSpec._ @@ -136,7 +137,7 @@ class RemoteInstrumentsSerializationSpec extends PekkoSpec("pekko.loglevel = DEB object RemoteInstrumentsSerializationSpec { - class Filter(@unused settings: ActorSystem.Settings, stream: EventStream) extends LoggingFilter { + class Filter(@nowarn("msg=never used") settings: ActorSystem.Settings, stream: EventStream) extends LoggingFilter { stream.publish(Mute(EventFilter.debug())) override def isErrorEnabled(logClass: Class[_], logSource: String): Boolean = true diff --git a/remote/src/test/scala/org/apache/pekko/remote/serialization/DaemonMsgCreateSerializerAllowJavaSerializationSpec.scala b/remote/src/test/scala/org/apache/pekko/remote/serialization/DaemonMsgCreateSerializerAllowJavaSerializationSpec.scala index 7bdbaa574b..f243b00e38 100644 --- a/remote/src/test/scala/org/apache/pekko/remote/serialization/DaemonMsgCreateSerializerAllowJavaSerializationSpec.scala +++ b/remote/src/test/scala/org/apache/pekko/remote/serialization/DaemonMsgCreateSerializerAllowJavaSerializationSpec.scala @@ -13,6 +13,8 @@ package org.apache.pekko.remote.serialization +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.Actor import pekko.actor.ActorRef @@ -30,7 +32,6 @@ import pekko.serialization.Serialization import pekko.serialization.SerializationExtension import pekko.testkit.JavaSerializable import pekko.testkit.PekkoSpec -import pekko.util.unused import com.typesafe.config.ConfigFactory @@ -40,9 +41,10 @@ object DaemonMsgCreateSerializerAllowJavaSerializationSpec { def receive = Actor.emptyBehavior } class MyActor extends EmptyActor - class MyActorWithParam(@unused ignore: String) extends EmptyActor - class MyActorWithFunParam(@unused fun: Function1[Int, Int]) extends EmptyActor - class ActorWithDummyParameter(@unused javaSerialized: DummyParameter, @unused protoSerialized: ActorRef) + class MyActorWithParam(@nowarn("msg=never used") ignore: String) extends EmptyActor + class MyActorWithFunParam(@nowarn("msg=never used") fun: Function1[Int, Int]) extends EmptyActor + class ActorWithDummyParameter(@nowarn("msg=never used") javaSerialized: DummyParameter, + @nowarn("msg=never used") protoSerialized: ActorRef) extends EmptyActor } diff --git a/remote/src/test/scala/org/apache/pekko/remote/serialization/ProtobufSerializerSpec.scala b/remote/src/test/scala/org/apache/pekko/remote/serialization/ProtobufSerializerSpec.scala index 27151d4909..d9d83c3694 100644 --- a/remote/src/test/scala/org/apache/pekko/remote/serialization/ProtobufSerializerSpec.scala +++ b/remote/src/test/scala/org/apache/pekko/remote/serialization/ProtobufSerializerSpec.scala @@ -13,6 +13,8 @@ package org.apache.pekko.remote.serialization +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor.ExtendedActorSystem import pekko.remote.MessageSerializer @@ -21,7 +23,6 @@ import pekko.remote.WireFormats.SerializedMessage import pekko.remote.protobuf.v3.ProtobufProtocolV3.MyMessageV3 import pekko.serialization.SerializationExtension import pekko.testkit.PekkoSpec -import pekko.util.unused // those must be defined as top level classes, to have static parseFrom case class MaliciousMessage() {} @@ -32,25 +33,25 @@ object ProtobufSerializerSpec { } object AnotherMessage { - def parseFrom(@unused bytes: Array[Byte]): AnotherMessage = + def parseFrom(@nowarn("msg=never used") bytes: Array[Byte]): AnotherMessage = new AnotherMessage } case class AnotherMessage() {} object AnotherMessage2 { - def parseFrom(@unused bytes: Array[Byte]): AnotherMessage2 = + def parseFrom(@nowarn("msg=never used") bytes: Array[Byte]): AnotherMessage2 = new AnotherMessage2 } case class AnotherMessage2() extends ProtobufSerializerSpec.AnotherInterface {} object AnotherMessage3 { - def parseFrom(@unused bytes: Array[Byte]): AnotherMessage3 = + def parseFrom(@nowarn("msg=never used") bytes: Array[Byte]): AnotherMessage3 = new AnotherMessage3 } case class AnotherMessage3() extends ProtobufSerializerSpec.AnotherBase {} object MaliciousMessage { - def parseFrom(@unused bytes: Array[Byte]): MaliciousMessage = + def parseFrom(@nowarn("msg=never used") bytes: Array[Byte]): MaliciousMessage = new MaliciousMessage } diff --git a/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonMigration.scala b/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonMigration.scala index ffad310fdb..fa343ec87a 100644 --- a/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonMigration.scala +++ b/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonMigration.scala @@ -13,9 +13,9 @@ package org.apache.pekko.serialization.jackson -import com.fasterxml.jackson.databind.JsonNode +import scala.annotation.nowarn -import org.apache.pekko.util.unused +import com.fasterxml.jackson.databind.JsonNode /** * Data migration of old formats to current format can @@ -51,7 +51,7 @@ abstract class JacksonMigration { * Override this method if you have changed the class name. Return * current class name. */ - def transformClassName(@unused fromVersion: Int, className: String): String = + def transformClassName(@nowarn("msg=never used") fromVersion: Int, className: String): String = className /** diff --git a/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonObjectMapperProvider.scala b/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonObjectMapperProvider.scala index c458503c5e..7e46452eb6 100644 --- a/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonObjectMapperProvider.scala +++ b/serialization-jackson/src/main/scala/org/apache/pekko/serialization/jackson/JacksonObjectMapperProvider.scala @@ -58,7 +58,6 @@ import pekko.actor.{ import pekko.actor.setup.Setup import pekko.annotation.InternalStableApi import pekko.event.{ Logging, LoggingAdapter } -import pekko.util.unused import com.typesafe.config.Config @@ -469,7 +468,7 @@ class JacksonObjectMapperFactory { * @param jsonFactory optional `JsonFactory` such as `CBORFactory`, for plain JSON `None` (defaults) * can be used */ - def newObjectMapper(@unused bindingName: String, jsonFactory: JsonFactory): ObjectMapper = + def newObjectMapper(@nowarn("msg=never used") bindingName: String, jsonFactory: JsonFactory): ObjectMapper = JsonMapper.builder(jsonFactory).build() /** @@ -485,7 +484,7 @@ class JacksonObjectMapperFactory { * `pekko.serialization.jackson.deserialization-features` */ def overrideConfiguredModules( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredModules: immutable.Seq[Module]): immutable.Seq[Module] = configuredModules @@ -502,7 +501,7 @@ class JacksonObjectMapperFactory { * `pekko.serialization.jackson.serialization-features` */ def overrideConfiguredSerializationFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(SerializationFeature, Boolean)]) : immutable.Seq[(SerializationFeature, Boolean)] = configuredFeatures @@ -520,7 +519,7 @@ class JacksonObjectMapperFactory { * `pekko.serialization.jackson.deserialization-features` */ def overrideConfiguredDeserializationFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(DeserializationFeature, Boolean)]) : immutable.Seq[(DeserializationFeature, Boolean)] = configuredFeatures @@ -538,7 +537,7 @@ class JacksonObjectMapperFactory { * `pekko.serialization.jackson3.enum-features` */ def overrideConfiguredEnumFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(EnumFeature, Boolean)]) : immutable.Seq[(EnumFeature, Boolean)] = configuredFeatures @@ -552,7 +551,7 @@ class JacksonObjectMapperFactory { * @param configuredFeatures the list of `MapperFeatures` that were configured in `pekko.serialization.jackson.mapper-features` */ def overrideConfiguredMapperFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(MapperFeature, Boolean)]): immutable.Seq[(MapperFeature, Boolean)] = configuredFeatures @@ -565,7 +564,7 @@ class JacksonObjectMapperFactory { * @param configuredFeatures the list of `JsonParser.Feature` that were configured in `pekko.serialization.jackson.json-parser-features` */ def overrideConfiguredJsonParserFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(JsonParser.Feature, Boolean)]): immutable.Seq[(JsonParser.Feature, Boolean)] = configuredFeatures @@ -578,7 +577,7 @@ class JacksonObjectMapperFactory { * @param configuredFeatures the list of `JsonGenerator.Feature` that were configured in `pekko.serialization.jackson.json-generator-features` */ def overrideConfiguredJsonGeneratorFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(JsonGenerator.Feature, Boolean)]) : immutable.Seq[(JsonGenerator.Feature, Boolean)] = configuredFeatures @@ -592,7 +591,7 @@ class JacksonObjectMapperFactory { * @param configuredFeatures the list of `StreamReadFeature` that were configured in `pekko.serialization.jackson.stream-read-features` */ def overrideConfiguredStreamReadFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(StreamReadFeature, Boolean)]): immutable.Seq[(StreamReadFeature, Boolean)] = configuredFeatures @@ -605,7 +604,7 @@ class JacksonObjectMapperFactory { * @param configuredFeatures the list of `StreamWriterFeature` that were configured in `pekko.serialization.jackson.stream-write-features` */ def overrideConfiguredStreamWriteFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(StreamWriteFeature, Boolean)]): immutable.Seq[(StreamWriteFeature, Boolean)] = configuredFeatures @@ -618,7 +617,7 @@ class JacksonObjectMapperFactory { * @param configuredFeatures the list of `JsonReadFeature` that were configured in `pekko.serialization.jackson.json-read-features` */ def overrideConfiguredJsonReadFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(JsonReadFeature, Boolean)]): immutable.Seq[(JsonReadFeature, Boolean)] = configuredFeatures @@ -631,7 +630,7 @@ class JacksonObjectMapperFactory { * @param configuredFeatures the list of `JsonWriteFeature` that were configured in `pekko.serialization.jackson.json-write-features` */ def overrideConfiguredJsonWriteFeatures( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(JsonWriteFeature, Boolean)]): immutable.Seq[(JsonWriteFeature, Boolean)] = configuredFeatures @@ -645,7 +644,7 @@ class JacksonObjectMapperFactory { * `pekko.serialization.jackson.visibility` */ def overrideConfiguredVisibility( - @unused bindingName: String, + @nowarn("msg=never used") bindingName: String, configuredFeatures: immutable.Seq[(PropertyAccessor, JsonAutoDetect.Visibility)]) : immutable.Seq[(PropertyAccessor, JsonAutoDetect.Visibility)] = configuredFeatures diff --git a/slf4j/src/main/scala/org/apache/pekko/event/slf4j/Slf4jLogger.scala b/slf4j/src/main/scala/org/apache/pekko/event/slf4j/Slf4jLogger.scala index 3e2591e787..f6d6fdf4fb 100644 --- a/slf4j/src/main/scala/org/apache/pekko/event/slf4j/Slf4jLogger.scala +++ b/slf4j/src/main/scala/org/apache/pekko/event/slf4j/Slf4jLogger.scala @@ -13,12 +13,14 @@ package org.apache.pekko.event.slf4j +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor._ import pekko.dispatch.RequiresMessageQueue import pekko.event.{ LogMarker, _ } import pekko.event.Logging._ -import pekko.util.{ unused, Helpers } +import pekko.util.Helpers import org.slf4j.{ Logger => SLFLogger, LoggerFactory => SLFLoggerFactory, MDC, Marker, MarkerFactory } @@ -168,7 +170,7 @@ class Slf4jLogger extends Actor with SLF4JLogging with RequiresMessageQueue[Logg * backend configuration (e.g. logback.xml) to filter log events before publishing * the log events to the `eventStream`. */ -class Slf4jLoggingFilter(@unused settings: ActorSystem.Settings, eventStream: EventStream) +class Slf4jLoggingFilter(@nowarn("msg=never used") settings: ActorSystem.Settings, eventStream: EventStream) extends LoggingFilterWithMarker { def isErrorEnabled(logClass: Class[_], logSource: String) = (eventStream.logLevel >= ErrorLevel) && Logger(logClass, logSource).isErrorEnabled diff --git a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowGroupedWeightedSpec.scala b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowGroupedWeightedSpec.scala index b28434610a..62630fa2a4 100644 --- a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowGroupedWeightedSpec.scala +++ b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowGroupedWeightedSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.stream.scaladsl +import scala.annotation.nowarn import scala.collection.immutable import scala.concurrent.Await import scala.concurrent.duration._ @@ -20,7 +21,6 @@ import scala.concurrent.duration._ import org.apache.pekko import pekko.stream.testkit.{ ScriptedTest, StreamSpec, TestPublisher, TestSubscriber } import pekko.testkit.TimingTest -import pekko.util.unused class FlowGroupedWeightedSpec extends StreamSpec(""" pekko.stream.materializer.initial-input-buffer-size = 2 @@ -29,7 +29,7 @@ class FlowGroupedWeightedSpec extends StreamSpec(""" "A GroupedWeighted" must { "produce no group (empty sink sequence) when source is empty" in { val input = immutable.Seq.empty - def costFn(@unused e: Int): Long = 999999L // set to an arbitrarily big value + def costFn(@nowarn("msg=never used") e: Int): Long = 999999L // set to an arbitrarily big value val future = Source(input).groupedWeighted(1)(costFn).runWith(Sink.seq) val result = Await.result(future, remainingOrDefault) result should be(Seq.empty) @@ -37,7 +37,7 @@ class FlowGroupedWeightedSpec extends StreamSpec(""" "always exhaust a source into a single group if cost is 0" in { val input = 1 to 15 - def costFn(@unused e: Int): Long = 0L + def costFn(@nowarn("msg=never used") e: Int): Long = 0L val minWeight = 1 // chose the least possible value for minWeight val future = Source(input).groupedWeighted(minWeight)(costFn).runWith(Sink.seq) val result = Await.result(future, remainingOrDefault) @@ -46,7 +46,7 @@ class FlowGroupedWeightedSpec extends StreamSpec(""" "exhaust source into one group if minWeight equals the accumulated cost of the source" in { val input = 1 to 16 - def costFn(@unused e: Int): Long = 1L + def costFn(@nowarn("msg=never used") e: Int): Long = 1L val minWeight = input.length val future = Source(input).groupedWeighted(minWeight)(costFn).runWith(Sink.seq) val result = Await.result(future, remainingOrDefault) diff --git a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowLimitWeightedSpec.scala b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowLimitWeightedSpec.scala index afbce26637..4726c1a523 100644 --- a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowLimitWeightedSpec.scala +++ b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FlowLimitWeightedSpec.scala @@ -13,12 +13,12 @@ package org.apache.pekko.stream.scaladsl +import scala.annotation.nowarn import scala.concurrent.Await import org.apache.pekko import pekko.stream.StreamLimitReachedException import pekko.stream.testkit.StreamSpec -import pekko.util.unused class FlowLimitWeightedSpec extends StreamSpec(""" pekko.stream.materializer.initial-input-buffer-size = 2 @@ -28,7 +28,7 @@ class FlowLimitWeightedSpec extends StreamSpec(""" "produce empty sequence regardless of cost when source is empty and n = 0" in { val input = Range(0, 0, 1) val n = input.length - def costFn(@unused e: Int): Long = 999999L // set to an arbitrarily big value + def costFn(@nowarn("msg=never used") e: Int): Long = 999999L // set to an arbitrarily big value val future = Source(input).limitWeighted(n)(costFn).grouped(Integer.MAX_VALUE).runWith(Sink.headOption) val result = Await.result(future, remainingOrDefault) result should be(None) @@ -36,7 +36,7 @@ class FlowLimitWeightedSpec extends StreamSpec(""" "always exhaust a source regardless of n (as long as n > 0) if cost is 0" in { val input = 1 to 15 - def costFn(@unused e: Int): Long = 0L + def costFn(@nowarn("msg=never used") e: Int): Long = 0L val n = 1 // must not matter since costFn always evaluates to 0 val future = Source(input).limitWeighted(n)(costFn).grouped(Integer.MAX_VALUE).runWith(Sink.head) val result = Await.result(future, remainingOrDefault) @@ -45,7 +45,7 @@ class FlowLimitWeightedSpec extends StreamSpec(""" "exhaust source if n equals to input length and cost is 1" in { val input = 1 to 16 - def costFn(@unused e: Int): Long = 1L + def costFn(@nowarn("msg=never used") e: Int): Long = 1L val n = input.length val future = Source(input).limitWeighted(n)(costFn).grouped(Integer.MAX_VALUE).runWith(Sink.head) val result = Await.result(future, remainingOrDefault) diff --git a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FramingSpec.scala b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FramingSpec.scala index 043fc32f2e..ef67db1023 100644 --- a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FramingSpec.scala +++ b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/FramingSpec.scala @@ -16,6 +16,7 @@ package org.apache.pekko.stream.scaladsl import java.nio.ByteOrder import java.util.concurrent.ThreadLocalRandom +import scala.annotation.nowarn import scala.collection.immutable import scala.concurrent.Future import scala.concurrent.duration._ @@ -31,7 +32,6 @@ import pekko.stream.testkit.TestPublisher import pekko.stream.testkit.TestSubscriber import pekko.util.ByteString import pekko.util.ByteStringBuilder -import pekko.util.unused class FramingSpec extends StreamSpec { @@ -394,7 +394,7 @@ class FramingSpec extends StreamSpec { "ignore length field value when provided computeFrameSize (#27884)" in { implicit val bo = java.nio.ByteOrder.LITTLE_ENDIAN - def computeFrameSize(@unused arr: Array[Byte], @unused l: Int): Int = 8 + def computeFrameSize(@nowarn("msg=never used") arr: Array[Byte], @nowarn("msg=never used") l: Int): Int = 8 val bs = ByteString.newBuilder.putInt(0xFF010203).putInt(0x04050607).result() @@ -410,7 +410,7 @@ class FramingSpec extends StreamSpec { "fail the stage on computeFrameSize values less than minimum chunk size" in { implicit val bo = java.nio.ByteOrder.LITTLE_ENDIAN - def computeFrameSize(@unused arr: Array[Byte], @unused l: Int): Int = 3 + def computeFrameSize(@nowarn("msg=never used") arr: Array[Byte], @nowarn("msg=never used") l: Int): Int = 3 // A 4-byte message containing only an Int specifying the length of the payload val bs = ByteString.newBuilder.putInt(4).result() diff --git a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/GraphUnzipWithSpec.scala b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/GraphUnzipWithSpec.scala index d69708333b..453211543a 100644 --- a/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/GraphUnzipWithSpec.scala +++ b/stream-tests/src/test/scala/org/apache/pekko/stream/scaladsl/GraphUnzipWithSpec.scala @@ -13,6 +13,7 @@ package org.apache.pekko.stream.scaladsl +import scala.annotation.nowarn import scala.concurrent.Future import scala.concurrent.duration._ import scala.util.control.NoStackTrace @@ -26,7 +27,6 @@ import pekko.stream.testkit.TestSubscriber.Probe import pekko.stream.testkit.Utils.TE import pekko.testkit.EventFilter import pekko.testkit.TestProbe -import pekko.util.unused import org.reactivestreams.Publisher @@ -41,7 +41,7 @@ class GraphUnzipWithSpec extends StreamSpec(""" type LeftOutput = Int type RightOutput = String - abstract class Fixture(@unused b: GraphDSL.Builder[_]) { + abstract class Fixture(@nowarn("msg=never used") b: GraphDSL.Builder[_]) { def in: Inlet[Int] def left: Outlet[LeftOutput] def right: Outlet[RightOutput] diff --git a/stream/src/main/scala/org/apache/pekko/stream/impl/ActorProcessor.scala b/stream/src/main/scala/org/apache/pekko/stream/impl/ActorProcessor.scala index 486db489ed..101ce73b83 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/impl/ActorProcessor.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/impl/ActorProcessor.scala @@ -13,6 +13,8 @@ package org.apache.pekko.stream.impl +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor._ import pekko.annotation.InternalApi @@ -20,7 +22,6 @@ import pekko.event.Logging import pekko.stream.{ AbruptTerminationException, Attributes } import pekko.stream.ActorAttributes import pekko.stream.impl.ActorSubscriberMessage.{ OnComplete, OnError, OnNext, OnSubscribe } -import pekko.util.unused import org.reactivestreams.{ Processor, Subscriber, Subscription } @@ -165,7 +166,7 @@ import org.reactivestreams.{ Processor, Subscriber, Subscription } case OnSubscribe(_) => throw new IllegalStateException("onSubscribe called after onError or onComplete") } - protected def inputOnError(@unused e: Throwable): Unit = { + protected def inputOnError(@nowarn("msg=never used") e: Throwable): Unit = { clear() } diff --git a/stream/src/main/scala/org/apache/pekko/stream/impl/FanIn.scala b/stream/src/main/scala/org/apache/pekko/stream/impl/FanIn.scala index d7b5d4fa42..acea3bac9a 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/impl/FanIn.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/impl/FanIn.scala @@ -13,13 +13,14 @@ package org.apache.pekko.stream.impl +import scala.annotation.nowarn + import org.apache.pekko import pekko.actor._ import pekko.annotation.{ DoNotInherit, InternalApi } import pekko.stream.AbruptTerminationException import pekko.stream.ActorAttributes import pekko.stream.Attributes -import pekko.util.unused import org.reactivestreams.{ Subscriber, Subscription } @@ -133,7 +134,7 @@ import org.reactivestreams.{ Subscriber, Subscription } def onError(input: Int, e: Throwable): Unit - def onDepleted(@unused input: Int): Unit = () + def onDepleted(@nowarn("msg=never used") input: Int): Unit = () def onCompleteWhenNoInput(): Unit = () diff --git a/stream/src/main/scala/org/apache/pekko/stream/impl/FanOut.scala b/stream/src/main/scala/org/apache/pekko/stream/impl/FanOut.scala index 90a175a07e..f3265f76ad 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/impl/FanOut.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/impl/FanOut.scala @@ -13,6 +13,7 @@ package org.apache.pekko.stream.impl +import scala.annotation.nowarn import scala.collection.immutable import org.apache.pekko @@ -21,7 +22,6 @@ import pekko.annotation.{ DoNotInherit, InternalApi } import pekko.stream.AbruptTerminationException import pekko.stream.ActorAttributes import pekko.stream.Attributes -import pekko.util.unused import org.reactivestreams.Subscription @@ -202,7 +202,7 @@ import org.reactivestreams.Subscription enqueue(id, elem) } - def onCancel(@unused output: Int): Unit = () + def onCancel(@nowarn("msg=never used") output: Int): Unit = () def demandAvailableFor(id: Int) = new TransferState { override def isCompleted: Boolean = cancelled(id) || completed(id) || errored(id) diff --git a/stream/src/main/scala/org/apache/pekko/stream/impl/TraversalBuilder.scala b/stream/src/main/scala/org/apache/pekko/stream/impl/TraversalBuilder.scala index a568d2be84..c6206a106a 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/impl/TraversalBuilder.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/impl/TraversalBuilder.scala @@ -13,6 +13,7 @@ package org.apache.pekko.stream.impl +import scala.annotation.nowarn import scala.collection.immutable.Map.Map1 import scala.language.existentials @@ -25,7 +26,6 @@ import pekko.stream.impl.fusing.{ GraphStageModule, IterableSource } import pekko.stream.impl.fusing.GraphStages.{ FutureSource, SingleSource } import pekko.stream.scaladsl.Keep import pekko.util.OptionVal -import pekko.util.unused /** * INTERNAL API @@ -56,7 +56,7 @@ import pekko.util.unused Concat.normalizeConcat(this, that) } - def rewireFirstTo(@unused relativeOffset: Int): Traversal = null + def rewireFirstTo(@nowarn("msg=never used") relativeOffset: Int): Traversal = null } /** diff --git a/stream/src/main/scala/org/apache/pekko/stream/impl/fusing/Ops.scala b/stream/src/main/scala/org/apache/pekko/stream/impl/fusing/Ops.scala index f758d2a76a..9d95de150c 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/impl/fusing/Ops.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/impl/fusing/Ops.scala @@ -53,7 +53,7 @@ import pekko.stream.scaladsl.{ StatefulMapConcatAccumulatorFactory } import pekko.stream.stage._ -import pekko.util.{ unused, ConstantFun, OptionVal } +import pekko.util.{ ConstantFun, OptionVal } /** * INTERNAL API @@ -678,7 +678,7 @@ private[stream] object Collect { private var aggregator: Out = zero private var aggregating: Future[Out] = Future.successful(aggregator) - private def onRestart(@unused t: Throwable): Unit = { + private def onRestart(@nowarn("msg=never used") t: Throwable): Unit = { aggregator = zero } diff --git a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Flow.scala b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Flow.scala index 48d7e992f6..7dba8b7e06 100755 --- a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Flow.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Flow.scala @@ -17,6 +17,7 @@ import java.util.Comparator import java.util.Optional import java.util.concurrent.CompletionStage +import scala.annotation.nowarn import scala.annotation.unchecked.uncheckedVariance import scala.annotation.varargs import scala.collection.immutable @@ -39,7 +40,6 @@ import pekko.stream.{ javadsl, _ } import pekko.stream.impl.fusing.{ StatefulMapConcat, ZipWithIndexJava } import pekko.util.ConstantFun import pekko.util.Timeout -import pekko.util.unused import org.reactivestreams.Processor @@ -93,7 +93,7 @@ object Flow { _.toJava).asJava /** Create a `Flow` which can process elements of type `T`. */ - def of[T](@unused clazz: Class[T]): javadsl.Flow[T, T, NotUsed] = create[T]() + def of[T](@nowarn("msg=never used") clazz: Class[T]): javadsl.Flow[T, T, NotUsed] = create[T]() /** * A graph with the shape of a flow logically is a flow, this method makes it so also in type. diff --git a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Graph.scala b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Graph.scala index fce10e9665..c0f424ffbc 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Graph.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Graph.scala @@ -16,6 +16,7 @@ package org.apache.pekko.stream.javadsl import java.util import java.util.Comparator +import scala.annotation.nowarn import scala.annotation.unchecked.uncheckedVariance import scala.jdk.CollectionConverters._ @@ -25,7 +26,6 @@ import pekko.japi.{ function, Pair } import pekko.stream._ import pekko.stream.scaladsl.GenericGraph import pekko.util.ConstantFun -import pekko.util.unused /** * Merge several streams, taking elements as they arrive from input streams @@ -50,7 +50,8 @@ object Merge { /** * Create a new `Merge` operator with the specified output type. */ - def create[T](@unused clazz: Class[T], inputPorts: Int): Graph[UniformFanInShape[T, T], NotUsed] = create(inputPorts) + def create[T](@nowarn("msg=never used") clazz: Class[T], inputPorts: Int): Graph[UniformFanInShape[T, T], NotUsed] = + create(inputPorts) /** * Create a new `Merge` operator with the specified output type. @@ -68,7 +69,7 @@ object Merge { * finish as soon as one of its inputs completes */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], inputPorts: Int, eagerComplete: Boolean): Graph[UniformFanInShape[T, T], NotUsed] = create(inputPorts, eagerComplete) @@ -99,7 +100,7 @@ object MergePreferred { * Create a new `MergePreferred` operator with the specified output type. */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], secondaryPorts: Int): Graph[scaladsl.MergePreferred.MergePreferredShape[T], NotUsed] = create(secondaryPorts) @@ -121,7 +122,7 @@ object MergePreferred { * finish as soon as one of its inputs completes */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], secondaryPorts: Int, eagerComplete: Boolean): Graph[scaladsl.MergePreferred.MergePreferredShape[T], NotUsed] = create(secondaryPorts, eagerComplete) @@ -156,7 +157,8 @@ object MergePrioritized { /** * Create a new `MergePrioritized` operator with the specified output type. */ - def create[T](@unused clazz: Class[T], priorities: Array[Int]): Graph[UniformFanInShape[T, T], NotUsed] = + def create[T](@nowarn("msg=never used") clazz: Class[T], priorities: Array[Int]) + : Graph[UniformFanInShape[T, T], NotUsed] = create(priorities) /** @@ -175,7 +177,7 @@ object MergePrioritized { * finish as soon as one of its inputs completes */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], priorities: Array[Int], eagerComplete: Boolean): Graph[UniformFanInShape[T, T], NotUsed] = create(priorities, eagerComplete) @@ -217,7 +219,7 @@ object Broadcast { /** * Create a new `Broadcast` operator with the specified input type. */ - def create[T](@unused clazz: Class[T], outputCount: Int): Graph[UniformFanOutShape[T, T], NotUsed] = + def create[T](@nowarn("msg=never used") clazz: Class[T], outputCount: Int): Graph[UniformFanOutShape[T, T], NotUsed] = create(outputCount) } @@ -347,7 +349,7 @@ object Partition { * @param partitioner function deciding which output each element will be targeted */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], outputCount: Int, partitioner: function.Function[T, Integer]): Graph[UniformFanOutShape[T, T], NotUsed] = new scaladsl.Partition(outputCount, partitioner.apply, eagerCancel = false) @@ -361,7 +363,7 @@ object Partition { * @param eagerCancel this operator cancels, when any (true) or all (false) of the downstreams cancel */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], outputCount: Int, partitioner: function.Function[T, Integer], eagerCancel: Boolean): Graph[UniformFanOutShape[T, T], NotUsed] = @@ -421,7 +423,7 @@ object Balance { * @param clazz a type hint for this method * @param outputCount number of output ports */ - def create[T](@unused clazz: Class[T], outputCount: Int): Graph[UniformFanOutShape[T, T], NotUsed] = + def create[T](@nowarn("msg=never used") clazz: Class[T], outputCount: Int): Graph[UniformFanOutShape[T, T], NotUsed] = create(outputCount) /** @@ -432,7 +434,7 @@ object Balance { * @param waitForAllDownstreams if `true` it will not start emitting elements to downstream outputs until all of them have requested at least one element */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], outputCount: Int, waitForAllDownstreams: Boolean): Graph[UniformFanOutShape[T, T], NotUsed] = create(outputCount, waitForAllDownstreams) @@ -446,7 +448,7 @@ object Balance { * @param eagerCancel if true, balance cancels upstream if any of its downstreams cancel, if false, when all have cancelled. */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], outputCount: Int, waitForAllDownstreams: Boolean, eagerCancel: Boolean): Graph[UniformFanOutShape[T, T], NotUsed] = @@ -571,7 +573,8 @@ object Unzip { /** * Creates a new `Unzip` operator with the specified output types. */ - def create[A, B](@unused left: Class[A], @unused right: Class[B]): Graph[FanOutShape2[A Pair B, A, B], NotUsed] = + def create[A, B](@nowarn("msg=never used") left: Class[A], @nowarn("msg=never used") right: Class[B]) + : Graph[FanOutShape2[A Pair B, A, B], NotUsed] = create[A, B]() } @@ -610,7 +613,7 @@ object Concat { /** * Create a new anonymous `Concat` operator with the specified input types. */ - def create[T](@unused clazz: Class[T]): Graph[UniformFanInShape[T, T], NotUsed] = create() + def create[T](@nowarn("msg=never used") clazz: Class[T]): Graph[UniformFanInShape[T, T], NotUsed] = create() } @@ -671,7 +674,7 @@ object MergeSequence { * @param extractSequence The function to extract the sequence from an element. */ def create[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], inputCount: Int, extractSequence: function.Function[T, Long]): Graph[UniformFanInShape[T, T], NotUsed] = create(inputCount, extractSequence) diff --git a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Hub.scala b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Hub.scala index 1a45707a1d..c6595b1f27 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Hub.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Hub.scala @@ -15,11 +15,12 @@ package org.apache.pekko.stream.javadsl import java.util.function.ToLongBiFunction +import scala.annotation.nowarn + import org.apache.pekko import pekko.NotUsed import pekko.annotation.DoNotInherit import pekko.japi.function -import pekko.util.unused /** * A MergeHub is a special streaming hub that is able to collect streamed elements from a dynamic set of @@ -64,7 +65,7 @@ object MergeHub { * @param clazz Type of elements this hub emits and consumes * @param perProducerBufferSize Buffer space used per producer. */ - def of[T](@unused clazz: Class[T], perProducerBufferSize: Int): Source[T, Sink[T, NotUsed]] = { + def of[T](@nowarn("msg=never used") clazz: Class[T], perProducerBufferSize: Int): Source[T, Sink[T, NotUsed]] = { pekko.stream.scaladsl.MergeHub.source[T](perProducerBufferSize).mapMaterializedValue(_.asJava[T]).asJava } @@ -86,7 +87,7 @@ object MergeHub { * @param perProducerBufferSize Buffer space used per producer. Default value is 16. */ def withDraining[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], perProducerBufferSize: Int): Source[T, pekko.japi.Pair[Sink[T, NotUsed], DrainingControl]] = { pekko.stream.scaladsl.MergeHub .sourceWithDraining[T](perProducerBufferSize) @@ -162,7 +163,7 @@ object BroadcastHub { * concurrent consumers can be in terms of element. If the buffer is full, the producer * is backpressured. Must be a power of two and less than 4096. */ - def of[T](@unused clazz: Class[T], bufferSize: Int): Sink[T, Source[T, NotUsed]] = { + def of[T](@nowarn("msg=never used") clazz: Class[T], bufferSize: Int): Sink[T, Source[T, NotUsed]] = { pekko.stream.scaladsl.BroadcastHub.sink[T](bufferSize).mapMaterializedValue(_.asJava).asJava } @@ -190,7 +191,8 @@ object BroadcastHub { * is backpressured. Must be a power of two and less than 4096. * @since 1.1.0 */ - def of[T](@unused clazz: Class[T], startAfterNrOfConsumers: Int, bufferSize: Int): Sink[T, Source[T, NotUsed]] = { + def of[T](@nowarn("msg=never used") clazz: Class[T], startAfterNrOfConsumers: Int, bufferSize: Int) + : Sink[T, Source[T, NotUsed]] = { pekko.stream.scaladsl.BroadcastHub.sink[T](startAfterNrOfConsumers, bufferSize).mapMaterializedValue( _.asJava).asJava } @@ -259,7 +261,7 @@ object PartitionHub { * is backpressured. */ def ofStateful[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], partitioner: function.Creator[ToLongBiFunction[ConsumerInfo, T]], startAfterNrOfConsumers: Int, bufferSize: Int): Sink[T, Source[T, NotUsed]] = { @@ -338,7 +340,7 @@ object PartitionHub { * is backpressured. */ def of[T]( - @unused clazz: Class[T], + @nowarn("msg=never used") clazz: Class[T], partitioner: function.Function2[Integer, T, Integer], startAfterNrOfConsumers: Int, bufferSize: Int): Sink[T, Source[T, NotUsed]] = diff --git a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Source.scala b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Source.scala index e2c047927a..93ed130117 100755 --- a/stream/src/main/scala/org/apache/pekko/stream/javadsl/Source.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/javadsl/Source.scala @@ -17,8 +17,8 @@ import java.util import java.util.Optional import java.util.concurrent.{ CompletableFuture, CompletionStage } +import scala.annotation.{ nowarn, varargs } import scala.annotation.unchecked.uncheckedVariance -import scala.annotation.varargs import scala.collection.immutable import scala.concurrent.{ Future, Promise } import scala.concurrent.ExecutionContext @@ -37,7 +37,7 @@ import pekko.japi.function.Creator import pekko.stream._ import pekko.stream.impl.{ LinearTraversalBuilder, UnfoldAsyncJava, UnfoldJava } import pekko.stream.impl.fusing.{ ArraySource, StatefulMapConcat, ZipWithIndexJava } -import pekko.util.{ unused, _ } +import pekko.util._ import org.reactivestreams.{ Publisher, Subscriber } @@ -54,7 +54,7 @@ object Source { /** * Create a `Source` with no elements. The result is the same as calling `Source.empty()` */ - def empty[T](@unused clazz: Class[T]): Source[T, NotUsed] = empty[T]() + def empty[T](@nowarn("msg=never used") clazz: Class[T]): Source[T, NotUsed] = empty[T]() /** * Create a `Source` which materializes a [[java.util.concurrent.CompletableFuture]] which controls what element diff --git a/stream/src/main/scala/org/apache/pekko/stream/scaladsl/Tcp.scala b/stream/src/main/scala/org/apache/pekko/stream/scaladsl/Tcp.scala index 3113f60b56..9d5ff66355 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/scaladsl/Tcp.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/scaladsl/Tcp.scala @@ -43,7 +43,6 @@ import pekko.stream.impl.io.ConnectionSourceStage import pekko.stream.impl.io.OutgoingConnectionStage import pekko.stream.impl.io.TcpIdleTimeout import pekko.util.ByteString -import pekko.util.unused object Tcp extends ExtensionId[Tcp] with ExtensionIdProvider { @@ -403,7 +402,7 @@ final class Tcp(system: ExtendedActorSystem) extends pekko.actor.Extension { } } -final class TcpIdleTimeoutException(msg: String, @unused timeout: Duration) +final class TcpIdleTimeoutException(msg: String, @nowarn("msg=never used") timeout: Duration) extends TimeoutException(msg: String) with NoStackTrace // only used from a single stage diff --git a/stream/src/main/scala/org/apache/pekko/stream/stage/GraphStage.scala b/stream/src/main/scala/org/apache/pekko/stream/stage/GraphStage.scala index 6be4276095..7f8972ac2d 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/stage/GraphStage.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/stage/GraphStage.scala @@ -17,6 +17,7 @@ import java.util.Spliterator import java.util.concurrent.{ CompletionStage, ConcurrentHashMap } import java.util.concurrent.atomic.AtomicReference +import scala.annotation.nowarn import scala.annotation.tailrec import scala.collection.{ immutable, mutable } import scala.concurrent.{ Future, Promise } @@ -35,7 +36,6 @@ import pekko.stream.impl.fusing.{ GraphInterpreter, GraphStageModule, SubSink, S import pekko.stream.scaladsl.GenericGraphWithChangedAttributes import pekko.stream.stage.ConcurrentAsyncCallbackState.{ NoPendingEvents, State } import pekko.util.OptionVal -import pekko.util.unused /** * Scala API: A GraphStage represents a reusable graph stream processing operator. @@ -59,7 +59,8 @@ abstract class GraphStageWithMaterializedValue[+S <: Shape, +M] extends Graph[S, @InternalApi private[pekko] def createLogicAndMaterializedValue( inheritedAttributes: Attributes, - @unused materializer: Materializer): (GraphStageLogic, M) = createLogicAndMaterializedValue(inheritedAttributes) + @nowarn("msg=never used") materializer: Materializer): (GraphStageLogic, M) = + createLogicAndMaterializedValue(inheritedAttributes) @throws(classOf[Exception]) def createLogicAndMaterializedValue(inheritedAttributes: Attributes): (GraphStageLogic, M) @@ -1727,7 +1728,7 @@ abstract class TimerGraphStageLogic(_shape: Shape) extends GraphStageLogic(_shap * @param timerKey key of the scheduled timer */ @throws(classOf[Exception]) - protected def onTimer(@unused timerKey: Any): Unit = () + protected def onTimer(@nowarn("msg=never used") timerKey: Any): Unit = () // Internal hooks to avoid reliance on user calling super in postStop protected[stream] override def afterPostStop(): Unit = { diff --git a/testkit/src/main/scala/org/apache/pekko/testkit/ExplicitlyTriggeredScheduler.scala b/testkit/src/main/scala/org/apache/pekko/testkit/ExplicitlyTriggeredScheduler.scala index dd2fb1a8a9..50693aae0f 100644 --- a/testkit/src/main/scala/org/apache/pekko/testkit/ExplicitlyTriggeredScheduler.scala +++ b/testkit/src/main/scala/org/apache/pekko/testkit/ExplicitlyTriggeredScheduler.scala @@ -17,6 +17,7 @@ import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ThreadFactory import java.util.concurrent.atomic.AtomicLong +import scala.annotation.nowarn import scala.annotation.tailrec import scala.concurrent.ExecutionContext import scala.concurrent.duration.{ Duration, FiniteDuration } @@ -27,7 +28,6 @@ import org.apache.pekko import pekko.actor.Cancellable import pekko.actor.Scheduler import pekko.event.LoggingAdapter -import pekko.util.unused import com.typesafe.config.Config @@ -41,7 +41,8 @@ import com.typesafe.config.Config * easier, but these tests might fail to catch race conditions that only * happen when tasks are scheduled in parallel in 'real time'. */ -class ExplicitlyTriggeredScheduler(@unused config: Config, log: LoggingAdapter, @unused tf: ThreadFactory) +class ExplicitlyTriggeredScheduler(@nowarn("msg=never used") config: Config, log: LoggingAdapter, + @nowarn("msg=never used") tf: ThreadFactory) extends Scheduler { private class Item(val interval: Option[FiniteDuration], val runnable: Runnable)