mirror of https://github.com/sbt/sbt.git
**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:
parent
5de1057488
commit
9e2cc51579
|
|
@ -771,9 +771,8 @@ object Defaults extends BuildCommon {
|
||||||
scalaCompilerBridgeBin := Def
|
scalaCompilerBridgeBin := Def
|
||||||
.ifS(Def.task {
|
.ifS(Def.task {
|
||||||
val sv = scalaVersion.value
|
val sv = scalaVersion.value
|
||||||
val managed = managedScalaInstance.value
|
|
||||||
val hasSbtBridge = ScalaArtifacts.isScala3(sv) || ZincLmUtil.hasScala2SbtBridge(sv)
|
val hasSbtBridge = ScalaArtifacts.isScala3(sv) || ZincLmUtil.hasScala2SbtBridge(sv)
|
||||||
hasSbtBridge && managed
|
hasSbtBridge
|
||||||
})(Def.cachedTask {
|
})(Def.cachedTask {
|
||||||
// Use scalaDynVersion to resolve dynamic versions (e.g., "3-latest.candidate" -> "3.8.1-RC1")
|
// Use scalaDynVersion to resolve dynamic versions (e.g., "3-latest.candidate" -> "3.8.1-RC1")
|
||||||
val sv = scalaDynVersion.value
|
val sv = scalaDynVersion.value
|
||||||
|
|
|
||||||
|
|
@ -62,12 +62,14 @@ object Compiler:
|
||||||
val sh = Keys.scalaHome.value
|
val sh = Keys.scalaHome.value
|
||||||
val app = Keys.appConfiguration.value
|
val app = Keys.appConfiguration.value
|
||||||
val managed = Keys.managedScalaInstance.value
|
val managed = Keys.managedScalaInstance.value
|
||||||
sh match
|
val configs = Keys.ivyConfigurations.value
|
||||||
case Some(h) => scalaInstanceConfigFromHome(h)
|
(sh, extraToolConf) match
|
||||||
case _ =>
|
case (Some(h), _) => scalaInstanceConfigFromHome(h)
|
||||||
val scalaProvider = app.provider.scalaProvider
|
case _ if !managed =>
|
||||||
if !managed then emptyScalaInstanceConfig
|
val extra = extraToolConf.getOrElse(Configurations.ScalaTool)
|
||||||
else scalaInstanceConfigFromUpdate(extraToolConf)
|
if configs.contains(extra) then scalaInstanceConfigFromUpdate(extraToolConf)
|
||||||
|
else emptyScalaInstanceConfig
|
||||||
|
case _ => scalaInstanceConfigFromUpdate(extraToolConf)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package example
|
||||||
|
|
||||||
|
class A {
|
||||||
|
val x = 1
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import Configurations.{ ScalaTool, ScalaDocTool }
|
||||||
|
|
||||||
|
@transient
|
||||||
|
lazy val check = taskKey[Unit]("")
|
||||||
|
lazy val scala213 = "2.13.16"
|
||||||
|
scalaVersion := scala213
|
||||||
|
autoScalaLibrary := false
|
||||||
|
managedScalaInstance := false
|
||||||
|
ivyConfigurations ++= List(ScalaTool, ScalaDocTool)
|
||||||
|
libraryDependencies ++= Seq(
|
||||||
|
"org.scala-lang" % "scala-library" % scala213,
|
||||||
|
"org.scala-lang" % "scala-compiler" % scala213 % ScalaTool,
|
||||||
|
"org.scala-lang" % "scala-compiler" % scala213 % ScalaDocTool,
|
||||||
|
)
|
||||||
|
check := {
|
||||||
|
val si = scalaInstance.value
|
||||||
|
assert(si.version == scala213, s"'${si.version}' was not '$scala213'")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
> compile
|
||||||
|
> doc
|
||||||
|
> check
|
||||||
Loading…
Reference in New Issue