diff --git a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamic.scala b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamic.scala index c6994bed6c..2d3a2b5cb2 100644 --- a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamic.scala +++ b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtDynamic.scala @@ -133,11 +133,10 @@ final case class ScalafmtDynamic( ): FormatEval[ScalafmtReflectConfig] = { for { version <- readVersion(configPath) + current = ScalafmtReflect.current fmtReflect <- - if (version == ScalafmtVersion.current) - Right(ScalafmtReflect.current) - else - resolveFormatter(configPath, version) + if (version == current.version) Right(current) + else resolveFormatter(configPath, version) config <- fmtReflect.parseConfig(configPath).toEither.left.map { case ex: ScalafmtDynamicError => ex case ex => new UnknownConfigError(configPath, ex) diff --git a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtReflect.scala b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtReflect.scala index 1a3a559b0d..e2919dff3e 100644 --- a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtReflect.scala +++ b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtReflect.scala @@ -182,6 +182,11 @@ case class ScalafmtReflect( } object ScalafmtReflect { - val current = - ScalafmtReflect(getClass.getClassLoader, ScalafmtVersion.current, false) + + lazy val current = ScalafmtReflect( + getClass.getClassLoader, + ScalafmtVersion.parse(BuildInfo.stable).get, + false + ) + } diff --git a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtVersion.scala b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtVersion.scala index e828a1c3ec..9aacbbc275 100644 --- a/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtVersion.scala +++ b/scalafmt-dynamic/src/main/scala/org/scalafmt/dynamic/ScalafmtVersion.scala @@ -27,13 +27,10 @@ case class ScalafmtVersion( object ScalafmtVersion { - val current = ScalafmtVersion(Int.MaxValue / 100, 0, 0) - private val versionRegex = """(\d)\.(\d)\.(\d)(?:-RC(\d))?(-SNAPSHOT)?""".r def parse(version: String): Option[ScalafmtVersion] = version match { - case "current" => Some(current) case versionRegex(major, minor, patch, rc, snapshot) => Try { ScalafmtVersion( diff --git a/scalafmt-tests/src/test/scala/org/scalafmt/dynamic/DynamicSuite.scala b/scalafmt-tests/src/test/scala/org/scalafmt/dynamic/DynamicSuite.scala index 522c630737..db5cd31d99 100644 --- a/scalafmt-tests/src/test/scala/org/scalafmt/dynamic/DynamicSuite.scala +++ b/scalafmt-tests/src/test/scala/org/scalafmt/dynamic/DynamicSuite.scala @@ -449,7 +449,7 @@ class DynamicSuite extends FunSuite { check("invalid config in current") { f => f.setConfig( - s"""|version=current + s"""|version=${BuildInfo.stable} |align=does-not-exist |""".stripMargin ) @@ -484,4 +484,24 @@ class DynamicSuite extends FunSuite { assert(thrown.getMessage.startsWith("Invalid config: Type mismatch;")) } + check("invalid version - current") { f => + f.setConfig( + s"""|version=current + |""".stripMargin + ) + val error = + f.assertThrows[ScalafmtDynamicError.ConfigInvalidVersion]().getMessage + assertEquals(error, "Invalid version: current") + } + + check("invalid version - missing") { f => + f.setConfig( + s"""|maxColumn = 40 + |""".stripMargin + ) + val error = + f.assertThrows[ScalafmtDynamicError.ConfigMissingVersion]().getMessage + assertEquals(error, "Missing version") + } + }