mirror of https://github.com/sbt/sbt.git
Fix taskDyn
This commit is contained in:
parent
9f5525c989
commit
193b47b49b
|
|
@ -232,7 +232,7 @@ object Def extends Init[Scope] with TaskMacroExtra with InitializeImplicits:
|
|||
inline def task[A1](inline a1: A1): Def.Initialize[Task[A1]] =
|
||||
${ TaskMacro.taskMacroImpl[A1]('a1) }
|
||||
|
||||
inline def taskDyn[A1](a1: Def.Initialize[Task[A1]]): Def.Initialize[Task[A1]] =
|
||||
inline def taskDyn[A1](inline a1: Def.Initialize[Task[A1]]): Def.Initialize[Task[A1]] =
|
||||
${ TaskMacro.taskDynMacroImpl[A1]('a1) }
|
||||
|
||||
inline def setting[A1](inline a: A1): Def.Initialize[A1] = ${ settingMacroImpl[A1]('a) }
|
||||
|
|
|
|||
|
|
@ -87,6 +87,12 @@ object Assign {
|
|||
mk.value + tk.value + mk.value + tk.value + mk.value + tk.value + mk.value + tk.value + mk.value + tk.value + mk.value + tk.value
|
||||
}
|
||||
|
||||
val dyn: Def.Initialize[Task[Int]] = Def.taskDyn {
|
||||
val a = ak.value
|
||||
if a < 1 then Def.task { 1 }
|
||||
else Def.task { 0 }
|
||||
}
|
||||
|
||||
import DefaultParsers._
|
||||
val p = Def.setting { name.value ~> Space ~> ID }
|
||||
val is = Seq(
|
||||
|
|
|
|||
|
|
@ -1099,34 +1099,39 @@ object Defaults extends BuildCommon {
|
|||
}
|
||||
|
||||
def scalaInstanceTask: Initialize[Task[ScalaInstance]] =
|
||||
(Def.task { (Keys.scalaHome.value, appConfiguration.value, scalaVersion.value) }).flatMapTask {
|
||||
case (Some(h), _, _) => scalaInstanceFromHome(h)
|
||||
case (_, app, version) =>
|
||||
val scalaProvider = app.provider.scalaProvider
|
||||
if version == scalaProvider.version then
|
||||
// use the same class loader as the Scala classes used by sbt
|
||||
Def.task {
|
||||
val allJars = scalaProvider.jars
|
||||
val libraryJars = allJars
|
||||
.filter { jar =>
|
||||
(jar.getName == "scala-library.jar") || (jar.getName.startsWith("scala3-library_3"))
|
||||
}
|
||||
(allJars.filter { jar =>
|
||||
jar.getName == "scala-compiler.jar" || jar.getName.startsWith("scala3-compiler_3")
|
||||
}) match {
|
||||
case Array(compilerJar) if libraryJars.nonEmpty =>
|
||||
makeScalaInstance(
|
||||
version,
|
||||
libraryJars,
|
||||
allJars,
|
||||
Seq.empty,
|
||||
state.value,
|
||||
scalaInstanceTopLoader.value
|
||||
)
|
||||
case _ => ScalaInstance(version, scalaProvider)
|
||||
Def.taskDyn {
|
||||
val sh = Keys.scalaHome.value
|
||||
val app = appConfiguration.value
|
||||
val sv = scalaVersion.value
|
||||
sh match
|
||||
case Some(h) => scalaInstanceFromHome(h)
|
||||
case _ =>
|
||||
val scalaProvider = app.provider.scalaProvider
|
||||
if sv == scalaProvider.version then
|
||||
// use the same class loader as the Scala classes used by sbt
|
||||
Def.task {
|
||||
val allJars = scalaProvider.jars
|
||||
val libraryJars = allJars
|
||||
.filter { jar =>
|
||||
(jar.getName == "scala-library.jar") || (jar.getName.startsWith(
|
||||
"scala3-library_3"
|
||||
))
|
||||
}
|
||||
(allJars.filter { jar =>
|
||||
jar.getName == "scala-compiler.jar" || jar.getName.startsWith("scala3-compiler_3")
|
||||
}) match
|
||||
case Array(compilerJar) if libraryJars.nonEmpty =>
|
||||
makeScalaInstance(
|
||||
sv,
|
||||
libraryJars,
|
||||
allJars.toSeq,
|
||||
Seq.empty,
|
||||
state.value,
|
||||
scalaInstanceTopLoader.value
|
||||
)
|
||||
case _ => ScalaInstance(sv, scalaProvider)
|
||||
}
|
||||
}
|
||||
else scalaInstanceFromUpdate
|
||||
else scalaInstanceFromUpdate
|
||||
}
|
||||
|
||||
// Returns the ScalaInstance only if it was not constructed via `update`
|
||||
|
|
|
|||
Loading…
Reference in New Issue