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]