@@ -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