Skip to content

Commit

Permalink
Fix ultra-long invalid Scala version errors (#2724)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gedochao authored Feb 12, 2024
1 parent 0e0045c commit 06b59a6
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ package scala.build.errors
import scala.build.errors.ScalaVersionError.getTheGeneralErrorInfo

final class InvalidBinaryScalaVersionError(val invalidBinaryVersion: String)
extends ScalaVersionError(s"Cannot find matching Scala version for '$invalidBinaryVersion")
extends ScalaVersionError(s"Cannot find matching Scala version for '$invalidBinaryVersion'")
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package scala.build.errors

import scala.build.errors.ScalaVersionError.getTheGeneralErrorInfo

final class NoValidScalaVersionFoundError(val foundVersions: Seq[String]) extends ScalaVersionError(
s"Cannot find a valid matching Scala version among ${foundVersions.mkString(", ")}"
)
final class NoValidScalaVersionFoundError(val versionString: String = "")
extends ScalaVersionError({
val suffix = if versionString.nonEmpty then s" for $versionString" else ""
s"Cannot find a valid matching Scala version$suffix."
})
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,9 @@ final case class BuildOptions(
repositories
)
case sv if ScalaVersionUtil.scala2Lts.contains(sv) =>
Left(new ScalaVersionError(s"Invalid Scala version: ${sv}. There is no official LTS version for Scala 2."))
Left(new ScalaVersionError(
s"Invalid Scala version: $sv. There is no official LTS version for Scala 2."
))
case sv if sv == ScalaVersionUtil.scala3Nightly =>
ScalaVersionUtil.GetNightly.scala3(cache)
case scala3NightlyNicknameRegex(threeSubBinaryNum) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ object ScalaVersionUtil {
def scala3Nightly = "3.nightly"
def scala3Lts = List("3.lts", "lts")
// not valid versions, defined only for informative error messages
def scala2Lts = List("2.13.lts", "2.12.lts", "2.lts")
def scala2Lts = List("2.13.lts", "2.12.lts", "2.lts")
extension (cache: FileCache[Task]) {
def fileWithTtl0(artifact: Artifact): Either[ArtifactError, File] =
cache.logger.use {
Expand Down Expand Up @@ -65,8 +65,7 @@ object ScalaVersionUtil {
extension (versionsResult: Versions.Result) {
def verify(versionString: String): Either[BuildException, Unit] =
if versionsResult.versions.available.contains(versionString) then Right(())
else
Left(new NoValidScalaVersionFoundError(versionsResult.versions.available))
else Left(NoValidScalaVersionFoundError(versionString))
}

object GetNightly {
Expand Down Expand Up @@ -129,8 +128,8 @@ object ScalaVersionUtil {
.versions.available.filter(_.endsWith("-NIGHTLY"))

val threeXNightlies = res.filter(_.startsWith(s"3.$threeSubBinaryNum.")).map(Version(_))
if (threeXNightlies.nonEmpty) Right(threeXNightlies.max.repr)
else Left(new NoValidScalaVersionFoundError(res))
if threeXNightlies.nonEmpty then Right(threeXNightlies.max.repr)
else Left(NoValidScalaVersionFoundError())
}

/** @return
Expand Down
2 changes: 1 addition & 1 deletion project/deps.sc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ object Scala {
def scala213 = "2.13.12"
def runnerScala3 = "3.0.2" // the newest version that is compatible with all Scala 3.x versions
def scala3 = "3.3.1"
def scala3Lts = "3.3" //the full version should be resolved later
def scala3Lts = "3.3" // the full version should be resolved later

// The Scala version used to build the CLI itself.
def defaultInternal = sys.props.get("scala.version.internal").getOrElse(scala3)
Expand Down

0 comments on commit 06b59a6

Please sign in to comment.