[2.x] fix: Fixes managedScalaInstance false support (#9121)

**Problem**
When managedScalaInstance is set to false, we stopped creating
ScalaInstance, but the documentation says the user can
pull in their own dependencies.

**Solution**
Attempt to construct a ScalaInstance from update report
even when managedScalaInstance is set to false.
This commit is contained in:
eugene yokota 2026-04-23 00:30:32 -04:00 committed by GitHub
parent ac0f3f5c6f
commit b98c4f8984
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 36 additions and 8 deletions

View File

@ -769,9 +769,8 @@ object Defaults extends BuildCommon with DefExtra {
scalaCompilerBridgeBin := Def
.ifS(Def.task {
val sv = scalaVersion.value
val managed = managedScalaInstance.value
val hasSbtBridge = ScalaArtifacts.isScala3(sv) || ScalaArtifacts.hasScala2SbtBridge(sv)
hasSbtBridge && managed
hasSbtBridge
})(Compiler.compilerBridgeFromUpdate)(Def.task(Vector.empty))
.value,
scalaCompilerBridgeJars := (Def.taskDyn {

View File

@ -64,12 +64,14 @@ object Compiler:
val sh = Keys.scalaHome.value
val app = Keys.appConfiguration.value
val managed = Keys.managedScalaInstance.value
sh match
case Some(h) => scalaInstanceConfigFromHome(h)
case _ =>
val scalaProvider = app.provider.scalaProvider
if !managed then emptyScalaInstanceConfig
else scalaInstanceConfigFromUpdate(extraToolConf)
val configs = Keys.ivyConfigurations.value
(sh, extraToolConf) match
case (Some(h), _) => scalaInstanceConfigFromHome(h)
case _ if !managed =>
val extra = extraToolConf.getOrElse(Configurations.ScalaTool)
if configs.contains(extra) then scalaInstanceConfigFromUpdate(extraToolConf)
else emptyScalaInstanceConfig
case _ => scalaInstanceConfigFromUpdate(extraToolConf)
}
/**

View File

@ -0,0 +1,5 @@
package example
class A {
val x = 1
}

View File

@ -0,0 +1,19 @@
import Configurations.{ ScalaTool, ScalaDocTool, ZincTool }
@transient
lazy val check = taskKey[Unit]("")
lazy val scala213 = "2.13.16"
scalaVersion := scala213
autoScalaLibrary := false
managedScalaInstance := false
ivyConfigurations ++= List(ScalaTool, ScalaDocTool, ZincTool)
libraryDependencies ++= Seq(
"org.scala-lang" % "scala-library" % scala213,
"org.scala-lang" % "scala-compiler" % scala213 % ScalaTool,
"org.scala-lang" % "scala-compiler" % scala213 % ScalaDocTool,
"org.scala-lang" % "scala2-sbt-bridge" % scala213 % ZincTool,
)
check := {
val si = scalaInstance.value
assert(si.version == scala213, s"'${si.version}' was not '$scala213'")
}

View File

@ -0,0 +1,3 @@
> compile
> doc
> check