Skip to content

Commit 5a22278

Browse files
committed
Add an error about Scala 2.12 not supported for toolkits
1 parent 03278e6 commit 5a22278

File tree

3 files changed

+44
-5
lines changed

3 files changed

+44
-5
lines changed

modules/build/src/test/scala/scala/build/tests/BuildTests.scala

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,4 +951,28 @@ abstract class BuildTests(server: Boolean) extends TestUtil.ScalaCliBuildSuite {
951951
expect(maybeBuild.exists(_.success))
952952
}
953953
}
954+
955+
for (dirValue <- Seq("default", "typelevel:default"))
956+
test(s"error when toolkit $dirValue is used with Scala 2.12") {
957+
val testInputs = TestInputs(
958+
os.rel / "simple.sc" ->
959+
s"""//> using toolkit $dirValue
960+
|
961+
|val n = 2
962+
|println(s"n=$$n")
963+
|""".stripMargin
964+
)
965+
966+
val scala212Options = baseOptions.copy(
967+
scalaOptions = baseOptions.scalaOptions.copy(
968+
scalaVersion = Some(MaybeScalaVersion(Constants.defaultScala212Version)),
969+
scalaBinaryVersion = None
970+
),
971+
scriptOptions = ScriptOptions(Some(true))
972+
)
973+
974+
testInputs.withBuild(scala212Options, buildThreads, bloopConfigOpt) { (_, _, maybeBuild) =>
975+
expect(maybeBuild.left.exists(_.message.startsWith("Toolkits do not support Scala 2.12")))
976+
}
977+
}
954978
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package scala.build.errors
2+
3+
import scala.build.Position
4+
5+
final class ToolkitVersionError(msg: String, positions: Seq[Position])
6+
extends BuildException(msg, positions)

modules/options/src/main/scala/scala/build/Artifacts.scala

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ package scala.build
22

33
import coursier.cache.FileCache
44
import coursier.core.{Classifier, Module, ModuleName, Organization, Repository, Version}
5-
import coursier.error.{CoursierError, ResolutionError}
6-
import coursier.parse.RepositoryParser
5+
import coursier.error.ResolutionError
76
import coursier.util.Task
8-
import coursier.{Dependency => CsDependency, Fetch, Resolution, core => csCore, util => csUtil}
7+
import coursier.{Fetch, Resolution, Dependency => CsDependency, core => csCore, util => csUtil}
98
import dependency.*
109

1110
import java.net.URL
12-
1311
import scala.build.CoursierUtils.*
1412
import scala.build.EitherCps.{either, value}
1513
import scala.build.Ops.*
@@ -18,7 +16,7 @@ import scala.build.errors.{
1816
CompositeBuildException,
1917
FetchingDependenciesError,
2018
NoScalaVersionProvidedError,
21-
RepositoryFormatError
19+
ToolkitVersionError
2220
}
2321
import scala.build.internal.Constants
2422
import scala.build.internal.Constants.*
@@ -654,6 +652,17 @@ object Artifacts {
654652
dependencies: Seq[Positioned[coursier.Dependency]],
655653
resolutionError: coursier.error.ResolutionError.Simple
656654
) = resolutionError match {
655+
// FIXME This if may not be enough when new toolkits are added
656+
case ex: ResolutionError.CantDownloadModule
657+
if ex.module.name.value == s"${Constants.toolkitName}_2.12" || ex.module.name.value == s"${Constants.toolkitTestName}_2.12" =>
658+
val errorPositions = dependencies.collect {
659+
case Positioned(pos, dep)
660+
if ex.module == dep.module => pos
661+
}.flatten
662+
new ToolkitVersionError(
663+
"Toolkits do not support Scala 2.12",
664+
errorPositions
665+
)
657666
case ex: ResolutionError.CantDownloadModule =>
658667
val errorPositions = dependencies.collect {
659668
case Positioned(pos, dep)

0 commit comments

Comments
 (0)