diff --git a/modules/build/src/main/scala/scala/build/options/BuildOptions.scala b/modules/build/src/main/scala/scala/build/options/BuildOptions.scala index 13063d7917..cd0216a72e 100644 --- a/modules/build/src/main/scala/scala/build/options/BuildOptions.scala +++ b/modules/build/src/main/scala/scala/build/options/BuildOptions.scala @@ -284,15 +284,17 @@ final case class BuildOptions( sv match { case Some(sv0) => val prefix = if (sv0.endsWith(".")) sv0 else sv0 + "." - val matchingVersions = allVersions.filter(_.startsWith(prefix)) + val matchingVersions = allVersions.filter(_.startsWith(prefix)).map(Version(_)) if (matchingVersions.isEmpty) Left(new InvalidBinaryScalaVersionError(sv0)) else { val validMaxVersions = maxSupportedScalaVersions .filter(_.repr.startsWith(prefix)) - val validMatchingVersions = matchingVersions - .map(Version(_)) - .filter(v => validMaxVersions.exists(v <= _)) + val validMatchingVersions = { + val filtered = matchingVersions.filter(v => validMaxVersions.exists(v <= _)) + if (filtered.isEmpty) matchingVersions + else filtered + } if (validMatchingVersions.isEmpty) Left(new UnsupportedScalaVersionError(sv0)) else diff --git a/modules/build/src/test/scala/scala/build/tests/BuildOptionsTests.scala b/modules/build/src/test/scala/scala/build/tests/BuildOptionsTests.scala index 207c346738..bfd583294c 100644 --- a/modules/build/src/test/scala/scala/build/tests/BuildOptionsTests.scala +++ b/modules/build/src/test/scala/scala/build/tests/BuildOptionsTests.scala @@ -35,7 +35,8 @@ class BuildOptionsTests extends munit.FunSuite { Some("2.12") -> defaultScala212Version, Some("2") -> defaultScala213Version, Some("2.13.2") -> "2.13.2", - Some("3.0.1") -> "3.0.1" + Some("3.0.1") -> "3.0.1", + Some("3.0") -> "3.0.2" ) for ((prefix, expectedScalaVersion) <- expectedScalaVersions) @@ -61,6 +62,7 @@ class BuildOptionsTests extends munit.FunSuite { val expectedScalaConfVersions = Seq( Some("3") -> "3.0.1", + Some("3.0") -> "3.0.1", None -> "3.0.1", Some("2.13") -> "2.13.4", Some("2.12") -> "2.12.13",