From 268d744ae2e153f1f00b482f7f5bff636af54847 Mon Sep 17 00:00:00 2001 From: Tomasz Godzik Date: Sat, 9 Mar 2024 22:23:56 +0100 Subject: [PATCH] chore: Adjust to changes in Scalafix --- .jvmopts | 2 +- .scalafix3.conf | 1 + .../internal/metals/ScalafixProvider.scala | 6 +++-- .../codeactions/OrganizeImportsLspSuite.scala | 26 ++++++++++++------- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/.jvmopts b/.jvmopts index 8e6c7e08685..e1ee079356e 100644 --- a/.jvmopts +++ b/.jvmopts @@ -1,6 +1,6 @@ -Xss4m -Xms1G --Xmx2G +-Xmx3G -XX:ReservedCodeCacheSize=1024m -XX:+TieredCompilation -Dfile.encoding=UTF-8 diff --git a/.scalafix3.conf b/.scalafix3.conf index 632539e2234..24e26fd881e 100644 --- a/.scalafix3.conf +++ b/.scalafix3.conf @@ -11,3 +11,4 @@ OrganizeImports.groups = [ "scala.meta." "*" ] +OrganizeImports.targetDialect = StandardLayout \ No newline at end of file diff --git a/metals/src/main/scala/scala/meta/internal/metals/ScalafixProvider.scala b/metals/src/main/scala/scala/meta/internal/metals/ScalafixProvider.scala index 6be82a0b030..f090f0834d0 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/ScalafixProvider.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/ScalafixProvider.scala @@ -271,6 +271,7 @@ case class ScalafixProvider( | OrganizeImports |] |OrganizeImports.removeUnused = false + |OrganizeImports.targetDialect = Scala3 | |""".stripMargin ) @@ -376,6 +377,7 @@ case class ScalafixProvider( val classpath = (targetRoot.toList ++ scalaTarget.fullClasspath).asJava + val isSource3 = scalaTarget.scalac.getOptions().contains("-Xsource:3") for { api <- getScalafix(scalaBinaryVersion) urlClassLoaderWithExternalRule <- getRuleClassLoader( @@ -389,7 +391,7 @@ case class ScalafixProvider( if (scalaBinaryVersion == "2.13") list.add("-Wunused:imports") else list.add("-Ywarn-unused-import") - if (!isScala3 && scalaTarget.scalac.getOptions().contains("-Xsource:3")) + if (!isScala3 && isSource3) list.add("-Xsource:3") // We always compile with synthetics:on but scalafix will fail if we don't set it here @@ -402,7 +404,7 @@ case class ScalafixProvider( .withScalaVersion(scalaVersion) .withClasspath(classpath) .withToolClasspath(urlClassLoaderWithExternalRule) - .withConfig(scalafixConf(isScala3).asJava) + .withConfig(scalafixConf(isScala3 || isSource3).asJava) .withRules(rules.asJava) .withPaths(List(diskFilePath.toNIO).asJava) .withSourceroot(sourceroot.toNIO) diff --git a/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala b/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala index f792e797e9f..d778eed7b77 100644 --- a/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala +++ b/tests/unit/src/test/scala/tests/codeactions/OrganizeImportsLspSuite.scala @@ -212,23 +212,29 @@ class OrganizeImportsLspSuite |import scala.concurrent.duration.* |import scala.concurrent.{Future<<>> as ScalaFuture} |import scala.concurrent.ExecutionContext.global + |import scala.concurrent.ExecutionContext | |object A { + | implicit val ec: ExecutionContext = global | val d = Duration(10, MICROSECONDS) | val k = ScalaFuture.successful(1) + | ScalaFuture{ println("Hello!") } |} |""".stripMargin, s"${SourceOrganizeImports.title}", - """ - |package a - |import scala.concurrent.duration.* - |import scala.concurrent.{Future as ScalaFuture} - | - |object A { - | val d = Duration(10, MICROSECONDS) - | val k = ScalaFuture.successful(1) - |} - |""".stripMargin, + """|package a + |import scala.concurrent.ExecutionContext + |import scala.concurrent.ExecutionContext.global + |import scala.concurrent.Future as ScalaFuture + |import scala.concurrent.duration.* + | + |object A { + | implicit val ec: ExecutionContext = global + | val d = Duration(10, MICROSECONDS) + | val k = ScalaFuture.successful(1) + | ScalaFuture{ println("Hello!") } + |} + |""".stripMargin, kind = List(sourceKind), scalacOptions = scalacOption ++ List("-Xsource:3"), )