From 14606c593d317c642f9b27e5147d627f8ffed4c5 Mon Sep 17 00:00:00 2001 From: kenji yoshida <6b656e6a69@gmail.com> Date: Thu, 19 Mar 2026 23:48:10 +0900 Subject: [PATCH] [2.x] ci: Add scalafix DisableSyntax.noReturns (#8922) --- .scalafix.conf | 5 +++++ build.sbt | 5 +++++ .../internal/util/complete/EditDistance.scala | 1 + .../util-logging/src/test/scala/Escapes.scala | 1 + .../UpdateReportPersistenceBenchmark.scala | 1 + .../internal/CacheUrlConversion.scala | 1 + .../internal/librarymanagement/IvyUtil.scala | 8 +++++--- .../ivyint/SbtChainResolver.scala | 19 +++++++++++-------- .../scala/sbt/internal/CommandExchange.scala | 2 ++ .../scala/sbt/internal/PomGenerator.scala | 1 + sbtw/src/main/scala/sbtw/Runner.scala | 1 + 11 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 .scalafix.conf diff --git a/.scalafix.conf b/.scalafix.conf new file mode 100644 index 000000000..3dfdbaf52 --- /dev/null +++ b/.scalafix.conf @@ -0,0 +1,5 @@ +rules = [ + DisableSyntax +] + +DisableSyntax.noReturns = true diff --git a/build.sbt b/build.sbt index 4156937df..dd36fd07c 100644 --- a/build.sbt +++ b/build.sbt @@ -45,6 +45,7 @@ ThisBuild / scmInfo := Some( ) ThisBuild / resolvers += Resolver.mavenLocal ThisBuild / mimaFailOnNoPrevious := false +ThisBuild / scalafixOnCompile := true Global / semanticdbEnabled := !(Global / insideCI).value // Change main/src/main/scala/sbt/plugins/SemanticdbPlugin.scala too, if you change this. @@ -1022,6 +1023,10 @@ lazy val sbtwProj = (project in file("sbtw")) description := "Windows drop-in launcher for sbt (replaces sbt.bat)", scalaVersion := "3.8.2", crossPaths := false, + Compile / scalafix / unmanagedSources := { + // https://github.com/scalameta/scalameta/issues/4531 + (Compile / unmanagedSources).value.filterNot(_.getName == "Main.scala") + }, Compile / mainClass := Some("sbtw.Main"), libraryDependencies += "com.github.scopt" %% "scopt" % "4.1.0", libraryDependencies += scalaVerify % Test, diff --git a/internal/util-complete/src/main/scala/sbt/internal/util/complete/EditDistance.scala b/internal/util-complete/src/main/scala/sbt/internal/util/complete/EditDistance.scala index 1368a2fa4..1bba27c39 100644 --- a/internal/util-complete/src/main/scala/sbt/internal/util/complete/EditDistance.scala +++ b/internal/util-complete/src/main/scala/sbt/internal/util/complete/EditDistance.scala @@ -18,6 +18,7 @@ object EditDistance { * Translated from the java version at http://www.merriampark.com/ld.htm which is declared to be * public domain. */ + @SuppressWarnings(Array("scalafix:DisableSyntax")) def levenshtein( s: String, t: String, diff --git a/internal/util-logging/src/test/scala/Escapes.scala b/internal/util-logging/src/test/scala/Escapes.scala index d88104c89..ac5e1e2df 100644 --- a/internal/util-logging/src/test/scala/Escapes.scala +++ b/internal/util-logging/src/test/scala/Escapes.scala @@ -67,6 +67,7 @@ object Escapes extends Properties("Escapes") { (original == removed) } + @SuppressWarnings(Array("scalafix:DisableSyntax")) def diffIndex(expect: String, original: String): String = { var i = 0; while (i < expect.length && i < original.length) { diff --git a/lm-core/src/test/scala/sbt/internal/librarymanagement/UpdateReportPersistenceBenchmark.scala b/lm-core/src/test/scala/sbt/internal/librarymanagement/UpdateReportPersistenceBenchmark.scala index 34725b7ba..bb45a9460 100644 --- a/lm-core/src/test/scala/sbt/internal/librarymanagement/UpdateReportPersistenceBenchmark.scala +++ b/lm-core/src/test/scala/sbt/internal/librarymanagement/UpdateReportPersistenceBenchmark.scala @@ -31,6 +31,7 @@ final case class BenchmarkResult( object UpdateReportPersistenceBenchmark: + @SuppressWarnings(Array("scalafix:DisableSyntax")) def run( iterations: Int = 500, configs: Seq[String] = Seq("compile", "test"), diff --git a/lm-coursier/src/main/scala/lmcoursier/internal/CacheUrlConversion.scala b/lm-coursier/src/main/scala/lmcoursier/internal/CacheUrlConversion.scala index 62345709b..43e20b13b 100644 --- a/lm-coursier/src/main/scala/lmcoursier/internal/CacheUrlConversion.scala +++ b/lm-coursier/src/main/scala/lmcoursier/internal/CacheUrlConversion.scala @@ -30,6 +30,7 @@ object CacheUrlConversion { withForwardSlash } + @SuppressWarnings(Array("scalafix:DisableSyntax")) def cacheFileToOriginalUrl(fileUrl: String, cacheDir: File): String = { if (!fileUrl.startsWith(FileUrlPrefix)) return fileUrl val filePath = normalizedFilePath(fileUrl) diff --git a/lm-ivy/src/main/scala/sbt/internal/librarymanagement/IvyUtil.scala b/lm-ivy/src/main/scala/sbt/internal/librarymanagement/IvyUtil.scala index 04b31adab..9b1e43bde 100644 --- a/lm-ivy/src/main/scala/sbt/internal/librarymanagement/IvyUtil.scala +++ b/lm-ivy/src/main/scala/sbt/internal/librarymanagement/IvyUtil.scala @@ -41,9 +41,11 @@ private[sbt] object IvyUtil { private val _r = """.*HTTP response code: (5\d{2}|408|429).*""".r @inline private def check(s: String): Boolean = { - if (s == null) return false - - _r.pattern.matcher(s).matches() + if (s == null) { + false + } else { + _r.pattern.matcher(s).matches() + } } def apply(t: Throwable): Boolean = t match { diff --git a/lm-ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtChainResolver.scala b/lm-ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtChainResolver.scala index c91a5db65..ef3852228 100644 --- a/lm-ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtChainResolver.scala +++ b/lm-ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/SbtChainResolver.scala @@ -111,14 +111,17 @@ private[sbt] case class SbtChainResolver( /* Copy pasted from `IvyStringUtils` to handle `Throwable` */ private def getStackTrace(e: Throwable): String = { - if (e == null) return "" - val baos = new ByteArrayOutputStream() - val printWriter = new PrintWriter(baos) - e.printStackTrace(printWriter) - printWriter.flush() - val stackTrace = new String(baos.toByteArray) - printWriter.close() - stackTrace + if (e == null) { + "" + } else { + val baos = new ByteArrayOutputStream() + val printWriter = new PrintWriter(baos) + e.printStackTrace(printWriter) + printWriter.flush() + val stackTrace = new String(baos.toByteArray) + printWriter.close() + stackTrace + } } /** If None, module was not found. Otherwise, hit. */ diff --git a/main/src/main/scala/sbt/internal/CommandExchange.scala b/main/src/main/scala/sbt/internal/CommandExchange.scala index 9d0fbeb5a..ad2486c87 100644 --- a/main/src/main/scala/sbt/internal/CommandExchange.scala +++ b/main/src/main/scala/sbt/internal/CommandExchange.scala @@ -516,6 +516,8 @@ private[sbt] final class CommandExchange { private def notifyOtherServers(): Unit = { val thread = new Thread("sbt-notify-other-servers") { setDaemon(true) + + @SuppressWarnings(Array("scalafix:DisableSyntax")) override def run(): Unit = { val procDir = SysProp.globalLocalCache / "proc" if (!procDir.exists) return diff --git a/main/src/main/scala/sbt/internal/PomGenerator.scala b/main/src/main/scala/sbt/internal/PomGenerator.scala index 579d37af7..9d6900836 100644 --- a/main/src/main/scala/sbt/internal/PomGenerator.scala +++ b/main/src/main/scala/sbt/internal/PomGenerator.scala @@ -240,6 +240,7 @@ private[sbt] object PomGenerator: (scope, optional) /** Convert Ivy-style dynamic versions to Maven range format. */ + @SuppressWarnings(Array("scalafix:DisableSyntax")) private def convertVersion(version: String): String = if version == null then null else if version.endsWith("+") then diff --git a/sbtw/src/main/scala/sbtw/Runner.scala b/sbtw/src/main/scala/sbtw/Runner.scala index 359effdce..ce0cb47d8 100644 --- a/sbtw/src/main/scala/sbtw/Runner.scala +++ b/sbtw/src/main/scala/sbtw/Runner.scala @@ -70,6 +70,7 @@ object Runner: if opts.jvmClient then s = s :+ "--client" s + @SuppressWarnings(Array("scalafix:DisableSyntax")) def runNativeClient(sbtBinDir: File, scriptPath: String, opts: LauncherOptions): Int = val sbtn = new File(sbtBinDir, "sbtn-x86_64-pc-win32.exe") if !sbtn.isFile then