diff --git a/README.md b/README.md index cc193e9..d38425a 100644 --- a/README.md +++ b/README.md @@ -15,27 +15,26 @@ inThisBuild(List( semanticdbEnabled := true, semanticdbOptions += "-P:semanticdb:synthetics:on", // make sure to add this semanticdbVersion := scalafixSemanticdb.revision, + scalafixScalaBinaryVersion := CrossVersion.binaryScalaVersion(scalaVersion.value), )) ``` Then run the desired rewrite(s) ([official docs][2]), in sbt: ```scala -> scalafix dependency:fix.scala213.ExplicitNonNullaryApply@org.scala-lang:scala-rewrites:0.1.0 -> Test/scalafix dependency:fix.scala213.ExplicitNonNullaryApply@org.scala-lang:scala-rewrites:0.1.0 +> scalafixAll dependency:fix.scala213.ExplicitNonNullaryApply@org.scala-lang:scala-rewrites:0.1.1 ``` You can also add the following to your `build.sbt`: ```scala -ThisBuild / scalafixDependencies += "org.scala-lang" %% "scala-rewrites" % "0.1.0" +ThisBuild / scalafixDependencies += "org.scala-lang" %% "scala-rewrites" % "0.1.1" ``` and then: ```scala -> scalafix fix.scala213.ExplicitNonNullaryApply -> Test/scalafix fix.scala213.ExplicitNonNullaryApply +> scalafixAll fix.scala213.ExplicitNonNullaryApply ``` [1]: https://scalacenter.github.io/scalafix/docs/users/installation.html diff --git a/rewrites/src/main/scala/fix/scala213/ExplicitNonNullaryApply.scala b/rewrites/src/main/scala/fix/scala213/ExplicitNonNullaryApply.scala index 3a8488e..d9a09a3 100644 --- a/rewrites/src/main/scala/fix/scala213/ExplicitNonNullaryApply.scala +++ b/rewrites/src/main/scala/fix/scala213/ExplicitNonNullaryApply.scala @@ -94,10 +94,23 @@ final class ExplicitNonNullaryApply(global: LazyValue[ScalafixGlobal]) case Type.Select(_, name: Type.Name) => name } - override def withConfiguration(config: Configuration) = - Configured.ok(new ExplicitNonNullaryApply(LazyValue.later { () => - ScalafixGlobal.newCompiler(config.scalacClasspath, config.scalacOptions, Map.empty) - })) + override def withConfiguration(config: Configuration) = { + val compileSv = config.scalaVersion + val runtimeSv = scala.util.Properties.versionNumberString + if ((compileSv.take(4) != runtimeSv.take(4)) && config.scalacOptions.nonEmpty) { + Configured.error( + s"Scala version mismatch: " + + s"(1) the target sources were compiled with Scala $compileSv; " + + s"(2) Scalafix is running on Scala $runtimeSv. " + + s"To fix make scalafixScalaBinaryVersion == ${compileSv.take(4)}. " + + "Try `ThisBuild / scalafixScalaBinaryVersion := CrossVersion.binaryScalaVersion(scalaVersion.value)`." + ) + } else { + Configured.ok(new ExplicitNonNullaryApply(LazyValue.later { () => + ScalafixGlobal.newCompiler(config.scalacClasspath, config.scalacOptions, Map.empty) + })) + } + } override def afterComplete() = shutdownCompiler() def shutdownCompiler() = for (g <- global) nonFatalCatch { g.askShutdown(); g.close() }