Skip to content

Commit 0341ee2

Browse files
authored
Merge pull request #554 from eed3si9n/wip/scala-3.8
[1.x] Add Scala 3.8 REPL deps
2 parents bc14bdf + ae8324c commit 0341ee2

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ object Configurations {
5252

5353
lazy val ScalaTool = Configuration.of("ScalaTool", "scala-tool").hide
5454
lazy val ScalaDocTool = Configuration.of("ScalaDocTool", "scala-doc-tool").hide
55+
lazy val ScalaReplTool = Configuration.of("ScalaReplTool", "scala-repl-tool").hide
5556
lazy val CompilerPlugin = Configuration.of("CompilerPlugin", "plugin").hide
5657
lazy val Component = Configuration.of("Component", "component").hide
5758

core/src/main/scala/sbt/librarymanagement/ScalaArtifacts.scala

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ object ScalaArtifacts {
1515
final val ScaladocID = "scaladoc"
1616
final val Scala3DocID = "scala3doc"
1717
final val Scala3TastyInspectorID = "scala3-tasty-inspector"
18+
final val Scala3ReplID = "scala3-repl"
1819
final val Scala3_8Artifacts = Vector(LibraryID, Scala3LibraryID)
1920

2021
private[sbt] final val Scala3LibraryPrefix = Scala3LibraryID + "_"
@@ -23,6 +24,7 @@ object ScalaArtifacts {
2324
private[sbt] final val ScaladocPrefix = ScaladocID + "_"
2425
private[sbt] final val Scala3DocPrefix = Scala3DocID + "_"
2526
private[sbt] final val Scala3TastyInspectorPrefix = Scala3TastyInspectorID + "_"
27+
private[sbt] final val Scala3ReplPrefix = Scala3ReplID + "_"
2628

2729
def isScala2Artifact(name: String): Boolean = {
2830
name == LibraryID || name == CompilerID || name == ReflectID || name == ActorsID || name == ScalapID
@@ -34,11 +36,21 @@ object ScalaArtifacts {
3436
name == Scala3InterfacesID ||
3537
name.startsWith(ScaladocPrefix) ||
3638
name.startsWith(Scala3DocPrefix) ||
37-
name.startsWith(Scala3TastyInspectorPrefix)
39+
name.startsWith(Scala3TastyInspectorPrefix) ||
40+
name.startsWith(Scala3ReplPrefix)
3841
}
3942

4043
def isScala3(scalaVersion: String): Boolean = scalaVersion.startsWith("3.")
4144

45+
/**
46+
* Returns true for pre-release nightlies intentionally.
47+
*/
48+
def isScala3_8Plus(scalaVersion: String): Boolean =
49+
isScala3(scalaVersion) && (scalaVersion match {
50+
case VersionNumber(numbers, _, _) if numbers.size > 2 && numbers(1) >= 8 => true
51+
case _ => false
52+
})
53+
4254
private[sbt] def isScala3M123(scalaVersion: String): Boolean =
4355
(scalaVersion == "3.0.0-M1") ||
4456
(scalaVersion == "3.0.0-M2") ||
@@ -64,6 +76,18 @@ object ScalaArtifacts {
6476
ModuleID(org, LibraryID, version)
6577
}
6678

79+
private[sbt] def replToolDependencies(
80+
org: String,
81+
version: String
82+
): Seq[ModuleID] =
83+
if (isScala3_8Plus(version))
84+
Seq(
85+
ModuleID(org, Scala3ReplID, version)
86+
.withConfigurations(Some(Configurations.ScalaReplTool.name + "->default(compile)"))
87+
.withCrossVersion(CrossVersion.binary)
88+
)
89+
else Seq.empty
90+
6791
private[sbt] def docToolDependencies(
6892
org: String,
6993
version: String

0 commit comments

Comments
 (0)