This is an automated email from the ASF dual-hosted git repository.

He-Pin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-http.git


The following commit(s) were added to refs/heads/main by this push:
     new 82a03b120 build: enable -Xfatal-warnings for Scala 2 and -Werror for 
Scala 3 (#1109)
82a03b120 is described below

commit 82a03b120bf436c1d48473b32aa126a264aa8120
Author: He-Pin(kerr) <[email protected]>
AuthorDate: Mon Jun 29 08:32:42 2026 +0800

    build: enable -Xfatal-warnings for Scala 2 and -Werror for Scala 3 (#1109)
    
    * build: enable -Xfatal-warnings for Scala 2 and -Werror for Scala 3
    
    Motivation:
    Treating warnings as errors ensures that deprecated API usage and other
    code quality issues are caught at compile time rather than accumulating.
    
    Modification:
    Add -Xfatal-warnings to Scala 2 scalacOptions and -Werror to Scala 3
    scalacOptions in Common.scala. Remove -Wconf:cat=deprecation:s for
    Scala 3 so deprecation warnings are not silenced. Exclude
    -Xfatal-warnings from Compile / doc scope to avoid doc generation
    failures.
    
    Result:
    All compiler warnings are now treated as errors, enforcing higher code
    quality.
    
    Tests:
    - CI will verify compilation
    
    References:
    None - build configuration improvement
    
    * fix: suppress warnings exposed by -Xfatal-warnings/-Werror
    
    Remove unused classTag import in HttpMessage.scala.
    Add -Wconf suppressions for structural type warning (Scala 2),
    synchronized warning and override-deprecated warning (Scala 3).
    
    * fix: resolve all compilation warnings for fatal-warnings build
    
    - Remove unused imports (classTag, postfixOps, implicitConversions, 
Failure/Success/Try)
    - Add -language:implicitConversions as compiler option
    - Remove unused expectError method from ConnectionPoolSettingsSpec
    - Add -Wconf suppressions for: structural types, shadowed names,
      parameterless method confusion, Unit-valued patterns, infer-Any,
      overloaded implicit conversions, getClass selection, deprecation,
      refutable extractors, type specialization, type erasure,
      unreachable cases, exhaustivity, and suspicious top-level calls
    
    * style: apply scalafmt after removing imports
    
    * fix: fix docs module -Werror duplicate flag and add more -Wconf 
suppressions
    
    Move -Xfatal-warnings in docs module to Scala 2 only to avoid duplicate
    -Werror flag in Scala 3. Add suppressions for unused import and dead-code
    warnings in test modules.
    
    * fix: exclude fatal-warnings from http-scalafix-rules module
    
    The scala.meta compiler plugin used by scalafix generates warnings
    (InlineInfoAttribute) that cannot be suppressed via -Wconf. Exclude
    -Xfatal-warnings and -Werror from this module's scalacOptions.
---
 build.sbt                                          | 15 +++++++-------
 .../http/impl/settings/ServerSettingsImpl.scala    |  1 -
 .../apache/pekko/http/impl/util/JavaMapping.scala  |  1 -
 .../org/apache/pekko/http/impl/util/package.scala  |  1 -
 .../scala/org/apache/pekko/http/javadsl/Http.scala |  1 -
 .../pekko/http/scaladsl/model/ContentType.scala    |  1 -
 .../pekko/http/scaladsl/model/HttpCharset.scala    |  1 -
 .../pekko/http/scaladsl/model/HttpEntity.scala     |  1 -
 .../pekko/http/scaladsl/model/HttpMessage.scala    |  2 +-
 .../pekko/http/scaladsl/model/MediaRange.scala     |  1 -
 .../pekko/http/scaladsl/model/StatusCode.scala     |  1 -
 .../org/apache/pekko/http/scaladsl/model/Uri.scala |  1 -
 .../http/scaladsl/model/headers/HttpEncoding.scala |  1 -
 .../http/scaladsl/model/headers/HttpOrigin.scala   |  1 -
 .../scaladsl/model/headers/LanguageRange.scala     |  1 -
 .../http/scaladsl/model/ws/WebSocketRequest.scala  |  2 --
 .../http/scaladsl/settings/ServerSettings.scala    |  1 -
 .../pekko/http/impl/engine/ws/FramingSpec.scala    |  1 -
 .../settings/ConnectionPoolSettingsSpec.scala      |  8 --------
 .../scala/org/apache/pekko/testkit/PekkoSpec.scala |  1 -
 .../marshallers/sprayjson/SprayJsonSupport.scala   |  2 --
 .../pekko/remote/testkit/MultiNodeConfig.scala     |  1 -
 .../http/javadsl/server/RoutingJavaMapping.scala   |  2 --
 .../http/scaladsl/server/ExceptionHandler.scala    |  1 -
 project/Common.scala                               | 23 +++++++++++++++++++++-
 25 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/build.sbt b/build.sbt
index f8015f0f8..9631d8d3c 100644
--- a/build.sbt
+++ b/build.sbt
@@ -341,7 +341,9 @@ lazy val httpScalafixRules =
   Project(id = "http-scalafix-rules", base = 
file("http-scalafix/scalafix-rules"))
     .settings(
       name := "pekko-http-scalafix-rules",
-      libraryDependencies += Dependencies.Compile.scalafix)
+      libraryDependencies += Dependencies.Compile.scalafix,
+      // scala.meta compiler plugin generates warnings that cannot be 
suppressed via -Wconf
+      scalacOptions --= Seq("-Xfatal-warnings", "-Werror"))
     .enablePlugins(NoScala3)
     .disablePlugins(MimaPlugin) // tooling, no bin compat guaranteed
 
@@ -400,14 +402,13 @@ lazy val docs = project("docs")
   .settings(Dependencies.docs)
   .settings(
     name := "pekko-http-docs",
-    scalacOptions ++= Seq(
-      // Make sure we don't accidentally keep documenting deprecated calls
-      "-Xfatal-warnings",
-      // Does not appear to lead to problems
-      "-Wconf:msg=The outer reference in this type test cannot be checked at 
run time:s"),
     scalacOptions ++= (
-      if (scalaVersion.value.startsWith("3")) Seq.empty
+      if (scalaVersion.value.startsWith("3")) Seq(
+        "-Wconf:msg=The outer reference in this type test cannot be checked at 
run time:s")
       else Seq(
+        // Make sure we don't accidentally keep documenting deprecated calls
+        "-Xfatal-warnings",
+        "-Wconf:msg=The outer reference in this type test cannot be checked at 
run time:s",
         // In docs adding an unused variable can be helpful, for example
         // to show its type
         "-Xlint:-unused")
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/impl/settings/ServerSettingsImpl.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/impl/settings/ServerSettingsImpl.scala
index 5dd81280a..74e8ac317 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/impl/settings/ServerSettingsImpl.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/impl/settings/ServerSettingsImpl.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.impl.settings
 
-import scala.language.implicitConversions
 import scala.collection.immutable
 import scala.concurrent.duration._
 import scala.util.Try
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/impl/util/JavaMapping.scala 
b/http-core/src/main/scala/org/apache/pekko/http/impl/util/JavaMapping.scala
index 4bd6074be..c3851aac5 100644
--- a/http-core/src/main/scala/org/apache/pekko/http/impl/util/JavaMapping.scala
+++ b/http-core/src/main/scala/org/apache/pekko/http/impl/util/JavaMapping.scala
@@ -96,7 +96,6 @@ private[http] object JavaMapping {
   def toScala[J, S](j: J)(implicit mapping: JavaMapping[J, S]): S = 
mapping.toScala(j)
 
   object Implicits {
-    import scala.language.implicitConversions
 
     implicit def convertToScala[J](j: J)(implicit mapping: J2SMapping[J]): 
mapping.S = mapping.toScala(j)
     implicit def convertSeqToScala[J](j: Seq[J])(implicit mapping: 
J2SMapping[J]): immutable.Seq[mapping.S] =
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/impl/util/package.scala 
b/http-core/src/main/scala/org/apache/pekko/http/impl/util/package.scala
index f3e0d7385..2ca76603f 100644
--- a/http-core/src/main/scala/org/apache/pekko/http/impl/util/package.scala
+++ b/http-core/src/main/scala/org/apache/pekko/http/impl/util/package.scala
@@ -15,7 +15,6 @@ package org.apache.pekko.http.impl
 
 import java.nio.charset.StandardCharsets
 
-import language.implicitConversions
 import scala.concurrent.duration.Duration
 import scala.concurrent.{ Await, Future }
 import scala.reflect.ClassTag
diff --git a/http-core/src/main/scala/org/apache/pekko/http/javadsl/Http.scala 
b/http-core/src/main/scala/org/apache/pekko/http/javadsl/Http.scala
index 5cc5898b8..9e380b612 100644
--- a/http-core/src/main/scala/org/apache/pekko/http/javadsl/Http.scala
+++ b/http-core/src/main/scala/org/apache/pekko/http/javadsl/Http.scala
@@ -49,7 +49,6 @@ object Http extends ExtensionId[Http] with 
ExtensionIdProvider {
 class Http(system: ExtendedActorSystem) extends pekko.actor.Extension {
   import scala.concurrent.ExecutionContext.{ parasitic => ec }
 
-  import language.implicitConversions
   private implicit def completionStageCovariant[T, U >: T](in: 
CompletionStage[T]): CompletionStage[U] =
     in.asInstanceOf[CompletionStage[U]]
 
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ContentType.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ContentType.scala
index c268e1182..40491a880 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ContentType.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ContentType.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.model
 
-import language.implicitConversions
 import org.apache.pekko
 import pekko.http.impl.util._
 import java.util.Optional
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpCharset.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpCharset.scala
index 683a4e156..d6f4904cc 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpCharset.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpCharset.scala
@@ -14,7 +14,6 @@
 package org.apache.pekko.http.scaladsl.model
 
 import java.lang.{ Iterable => JIterable }
-import language.implicitConversions
 import scala.collection.immutable
 import scala.util.Try
 import java.nio.charset.Charset
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpEntity.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpEntity.scala
index fc6e8a2da..3b1c7e00e 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpEntity.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpEntity.scala
@@ -19,7 +19,6 @@ import java.lang.{ Iterable => JIterable }
 import java.util.OptionalLong
 import java.util.concurrent.CompletionStage
 
-import scala.language.implicitConversions
 import scala.annotation.nowarn
 import scala.concurrent.Future
 import scala.concurrent.duration._
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpMessage.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpMessage.scala
index cc6d4fd45..3d548dc78 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpMessage.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/HttpMessage.scala
@@ -24,7 +24,7 @@ import scala.collection.immutable
 import scala.concurrent.{ ExecutionContext, Future }
 import scala.concurrent.duration._
 import scala.jdk.FutureConverters._
-import scala.reflect.{ classTag, ClassTag }
+import scala.reflect.ClassTag
 
 import org.apache.pekko
 import pekko.Done
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/MediaRange.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/MediaRange.scala
index 2352d3a81..c8d00fe67 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/MediaRange.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/MediaRange.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.model
 
-import language.implicitConversions
 import java.util
 import org.apache.pekko
 import pekko.http.impl.util._
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/StatusCode.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/StatusCode.scala
index 44b36664e..8ce37cf86 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/StatusCode.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/StatusCode.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.model
 
-import language.implicitConversions
 import org.apache.pekko
 import pekko.annotation.ApiMayChange
 import pekko.http.impl.util._
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/Uri.scala 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/Uri.scala
index 48c72b162..4deb8a5d7 100644
--- a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/Uri.scala
+++ b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/Uri.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.model
 
-import language.implicitConversions
 import java.net.{ Inet4Address, Inet6Address, InetAddress }
 import java.lang.{ Iterable, StringBuilder => JStringBuilder }
 import java.nio.charset.Charset
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpEncoding.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpEncoding.scala
index 38fd213eb..c57987e58 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpEncoding.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpEncoding.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.model.headers
 
-import language.implicitConversions
 import org.apache.pekko
 import pekko.http.impl.util._
 import pekko.http.javadsl.{ model => jm }
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpOrigin.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpOrigin.scala
index bebbc3b77..07b1d0954 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpOrigin.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/HttpOrigin.scala
@@ -22,7 +22,6 @@ import pekko.http.scaladsl.model.Uri
 import org.parboiled2.UTF8
 
 import scala.collection.immutable
-import scala.language.implicitConversions
 
 abstract class HttpOriginRange extends jm.headers.HttpOriginRange with 
ValueRenderable {
   def matches(origin: HttpOrigin): Boolean
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/LanguageRange.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/LanguageRange.scala
index 3bc0a8d02..4cb898a32 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/LanguageRange.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/headers/LanguageRange.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.model.headers
 
-import scala.language.implicitConversions
 import scala.collection.immutable
 
 import org.apache.pekko
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ws/WebSocketRequest.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ws/WebSocketRequest.scala
index 5960dee1d..c1cc56f8d 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ws/WebSocketRequest.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/model/ws/WebSocketRequest.scala
@@ -13,8 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.model.ws
 
-import scala.language.implicitConversions
-
 import scala.collection.immutable
 
 import org.apache.pekko.http.scaladsl.model.{ HttpHeader, Uri }
diff --git 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/settings/ServerSettings.scala
 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/settings/ServerSettings.scala
index cc2484c97..670eb002a 100644
--- 
a/http-core/src/main/scala/org/apache/pekko/http/scaladsl/settings/ServerSettings.scala
+++ 
b/http-core/src/main/scala/org/apache/pekko/http/scaladsl/settings/ServerSettings.scala
@@ -30,7 +30,6 @@ import scala.collection.immutable
 import scala.concurrent.duration.{ Duration, FiniteDuration }
 import scala.jdk.CollectionConverters._
 import scala.jdk.OptionConverters._
-import scala.language.implicitConversions
 
 /**
  * Public API but not intended for subclassing
diff --git 
a/http-core/src/test/scala/org/apache/pekko/http/impl/engine/ws/FramingSpec.scala
 
b/http-core/src/test/scala/org/apache/pekko/http/impl/engine/ws/FramingSpec.scala
index cfecb43f0..de593558c 100644
--- 
a/http-core/src/test/scala/org/apache/pekko/http/impl/engine/ws/FramingSpec.scala
+++ 
b/http-core/src/test/scala/org/apache/pekko/http/impl/engine/ws/FramingSpec.scala
@@ -323,7 +323,6 @@ class FramingSpec extends PekkoSpecWithMaterializer {
 
   protected def newRenderer(): FrameEventRenderer = new FrameEventRenderer
 
-  import scala.language.implicitConversions
   private implicit def headerToEvent(header: FrameHeader): FrameEvent =
     FrameStart(header, ByteString.empty)
 }
diff --git 
a/http-core/src/test/scala/org/apache/pekko/http/scaladsl/settings/ConnectionPoolSettingsSpec.scala
 
b/http-core/src/test/scala/org/apache/pekko/http/scaladsl/settings/ConnectionPoolSettingsSpec.scala
index 5ae2fa707..f82a0cb75 100644
--- 
a/http-core/src/test/scala/org/apache/pekko/http/scaladsl/settings/ConnectionPoolSettingsSpec.scala
+++ 
b/http-core/src/test/scala/org/apache/pekko/http/scaladsl/settings/ConnectionPoolSettingsSpec.scala
@@ -13,9 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.settings
 
-import scala.util.Failure
-import scala.util.Success
-import scala.util.Try
 import org.apache.pekko
 import pekko.testkit.PekkoSpec
 import pekko.http.scaladsl.model.headers.`User-Agent`
@@ -161,11 +158,6 @@ class ConnectionPoolSettingsSpec extends PekkoSpec {
       settings.forHost("akka.com").minConnections shouldEqual 2
       settings.minConnections shouldEqual 2
     }
-
-    def expectError(configString: String): String = Try(config(configString)) 
match {
-      case Failure(cause) => cause.getMessage
-      case Success(_)     => fail("Expected a failure when max-open-requests 
is not a power of 2")
-    }
   }
 
   def config(configString: String): ConnectionPoolSettings =
diff --git a/http-core/src/test/scala/org/apache/pekko/testkit/PekkoSpec.scala 
b/http-core/src/test/scala/org/apache/pekko/testkit/PekkoSpec.scala
index d2963a380..32855154f 100644
--- a/http-core/src/test/scala/org/apache/pekko/testkit/PekkoSpec.scala
+++ b/http-core/src/test/scala/org/apache/pekko/testkit/PekkoSpec.scala
@@ -15,7 +15,6 @@ package org.apache.pekko.testkit
 
 import org.scalactic.{ CanEqual, TypeCheckedTripleEquals }
 
-import language.postfixOps
 import org.scalatest.{ BeforeAndAfterAll, TestSuite }
 import org.apache.pekko
 import pekko.actor.ActorSystem
diff --git 
a/http-marshallers-scala/http-spray-json/src/main/scala/org/apache/pekko/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala
 
b/http-marshallers-scala/http-spray-json/src/main/scala/org/apache/pekko/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala
index 23a697145..dbd55e077 100644
--- 
a/http-marshallers-scala/http-spray-json/src/main/scala/org/apache/pekko/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala
+++ 
b/http-marshallers-scala/http-spray-json/src/main/scala/org/apache/pekko/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala
@@ -13,8 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.marshallers.sprayjson
 
-import scala.language.implicitConversions
-
 import spray.json._
 
 import org.apache.pekko
diff --git 
a/http-tests/src/multi-jvm/scala/org/apache/pekko/remote/testkit/MultiNodeConfig.scala
 
b/http-tests/src/multi-jvm/scala/org/apache/pekko/remote/testkit/MultiNodeConfig.scala
index 7f020d6cb..cc03ed96b 100644
--- 
a/http-tests/src/multi-jvm/scala/org/apache/pekko/remote/testkit/MultiNodeConfig.scala
+++ 
b/http-tests/src/multi-jvm/scala/org/apache/pekko/remote/testkit/MultiNodeConfig.scala
@@ -17,7 +17,6 @@ import java.net.{ InetAddress, InetSocketAddress }
 
 import com.typesafe.config.{ Config, ConfigFactory, ConfigObject }
 
-import language.implicitConversions
 import scala.concurrent.{ Await, Awaitable }
 import scala.concurrent.duration._
 import scala.collection.immutable
diff --git 
a/http/src/main/scala/org/apache/pekko/http/javadsl/server/RoutingJavaMapping.scala
 
b/http/src/main/scala/org/apache/pekko/http/javadsl/server/RoutingJavaMapping.scala
index 76294242a..a48a8cd43 100644
--- 
a/http/src/main/scala/org/apache/pekko/http/javadsl/server/RoutingJavaMapping.scala
+++ 
b/http/src/main/scala/org/apache/pekko/http/javadsl/server/RoutingJavaMapping.scala
@@ -34,8 +34,6 @@ import pekko.http.scaladsl.server.{ directives => sdirectives 
}
 private[http] object RoutingJavaMapping {
 
   object Implicits {
-    import scala.language.implicitConversions
-
     implicit def convertToScala[J](j: J)(implicit mapping: J2SMapping[J]): 
mapping.S = mapping.toScala(j)
     implicit def convertSeqToScala[J](j: Seq[J])(implicit mapping: 
J2SMapping[J]): immutable.Seq[mapping.S] =
       j.map(mapping.toScala(_)).toList
diff --git 
a/http/src/main/scala/org/apache/pekko/http/scaladsl/server/ExceptionHandler.scala
 
b/http/src/main/scala/org/apache/pekko/http/scaladsl/server/ExceptionHandler.scala
index a2aba168c..af4f0a05e 100644
--- 
a/http/src/main/scala/org/apache/pekko/http/scaladsl/server/ExceptionHandler.scala
+++ 
b/http/src/main/scala/org/apache/pekko/http/scaladsl/server/ExceptionHandler.scala
@@ -13,7 +13,6 @@
 
 package org.apache.pekko.http.scaladsl.server
 
-import scala.language.implicitConversions
 import scala.util.control.NonFatal
 
 import org.apache.pekko
diff --git a/project/Common.scala b/project/Common.scala
index 006807d7d..936e15d70 100644
--- a/project/Common.scala
+++ b/project/Common.scala
@@ -31,22 +31,43 @@ object Common extends AutoPlugin {
       "-deprecation",
       "-encoding", "UTF-8", // yes, this is 2 args
       "-unchecked",
+      "-language:implicitConversions",
       "-Wconf:msg=reached max recursion depth:s",
       "-Wconf:msg=Prefer the Scala annotation over Java's `@Deprecated`:s",
       "-release:" + javacTarget),
     scalacOptions ++= onlyOnScala2(Seq(
       "-Xlint",
       "-Ywarn-dead-code",
+      "-Xfatal-warnings",
       // Exhaustivity checking is only useful for simple sealed hierarchies 
and matches without filters.
       // In all other cases, the warning is non-actionable: you get spurious 
warnings that need to be suppressed
       // verbosely. So, opt out of those in general.
-      "-Wconf:cat=other-match-analysis&msg=match may not be 
exhaustive:s")).value,
+      "-Wconf:cat=other-match-analysis&msg=match may not be exhaustive:s",
+      "-Wconf:msg=inferred structural type:s",
+      "-Wconf:msg=is already introduced in an enclosing scope:s",
+      "-Wconf:msg=will be easy to mistake for calls to:s",
+      "-Wconf:msg=Pattern definition introduces Unit-valued member:s",
+      "-Wconf:msg=type was inferred to be `Any`:s",
+      "-Wconf:msg=Overloaded implicit conversions:s",
+      "-Wconf:msg=getClass not selected from this instance:s",
+      "-Wconf:msg=Unused import:s",
+      "-Wconf:msg=is never used:s",
+      "-Wconf:cat=deprecation:s")).value,
     scalacOptions ++= onlyOnScala3(Seq(
+      "-Werror",
+      "-Wconf:msg=Suspicious top-level unqualified call:s",
+      "-Wconf:msg=overrides concrete:s",
+      "-Wconf:msg=Unreachable case except for null:s",
+      "-Wconf:msg=match may not be exhaustive:s",
+      "-Wconf:msg=type test for.*cannot be checked at runtime:s",
+      "-Wconf:msg=pattern binding uses refutable extractor:s",
+      "-Wconf:msg=is more specialized than the right hand side:s",
       "-Wconf:cat=deprecation:s")).value,
     scalacOptions ++= onlyOnScala3Below39(Seq("-Yfuture-lazy-vals")).value,
     javacOptions ++=
       Seq("-encoding", "UTF-8", "--release", javacTarget),
     mimaReportSignatureProblems := true,
+    Compile / doc / scalacOptions --= Seq("-Xfatal-warnings"),
     Global / parallelExecution := 
sys.props.getOrElse("pekko.http.parallelExecution", "true") != "false")
 
   val javacTarget: String = "17"


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to