mirror of
https://github.com/sbt/sbt.git
synced 2026-08-22 06:07:24 +02:00
Fix taskDyn
This commit is contained in:
@@ -232,7 +232,7 @@ object Def extends Init[Scope] with TaskMacroExtra with InitializeImplicits:
|
|||||||
inline def task[A1](inline a1: A1): Def.Initialize[Task[A1]] =
|
inline def task[A1](inline a1: A1): Def.Initialize[Task[A1]] =
|
||||||
${ TaskMacro.taskMacroImpl[A1]('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) }
|
${ TaskMacro.taskDynMacroImpl[A1]('a1) }
|
||||||
|
|
||||||
inline def setting[A1](inline a: A1): Def.Initialize[A1] = ${ settingMacroImpl[A1]('a) }
|
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
|
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._
|
import DefaultParsers._
|
||||||
val p = Def.setting { name.value ~> Space ~> ID }
|
val p = Def.setting { name.value ~> Space ~> ID }
|
||||||
val is = Seq(
|
val is = Seq(
|
||||||
|
|||||||
@@ -1099,34 +1099,39 @@ object Defaults extends BuildCommon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def scalaInstanceTask: Initialize[Task[ScalaInstance]] =
|
def scalaInstanceTask: Initialize[Task[ScalaInstance]] =
|
||||||
(Def.task { (Keys.scalaHome.value, appConfiguration.value, scalaVersion.value) }).flatMapTask {
|
Def.taskDyn {
|
||||||
case (Some(h), _, _) => scalaInstanceFromHome(h)
|
val sh = Keys.scalaHome.value
|
||||||
case (_, app, version) =>
|
val app = appConfiguration.value
|
||||||
val scalaProvider = app.provider.scalaProvider
|
val sv = scalaVersion.value
|
||||||
if version == scalaProvider.version then
|
sh match
|
||||||
// use the same class loader as the Scala classes used by sbt
|
case Some(h) => scalaInstanceFromHome(h)
|
||||||
Def.task {
|
case _ =>
|
||||||
val allJars = scalaProvider.jars
|
val scalaProvider = app.provider.scalaProvider
|
||||||
val libraryJars = allJars
|
if sv == scalaProvider.version then
|
||||||
.filter { jar =>
|
// use the same class loader as the Scala classes used by sbt
|
||||||
(jar.getName == "scala-library.jar") || (jar.getName.startsWith("scala3-library_3"))
|
Def.task {
|
||||||
}
|
val allJars = scalaProvider.jars
|
||||||
(allJars.filter { jar =>
|
val libraryJars = allJars
|
||||||
jar.getName == "scala-compiler.jar" || jar.getName.startsWith("scala3-compiler_3")
|
.filter { jar =>
|
||||||
}) match {
|
(jar.getName == "scala-library.jar") || (jar.getName.startsWith(
|
||||||
case Array(compilerJar) if libraryJars.nonEmpty =>
|
"scala3-library_3"
|
||||||
makeScalaInstance(
|
))
|
||||||
version,
|
}
|
||||||
libraryJars,
|
(allJars.filter { jar =>
|
||||||
allJars,
|
jar.getName == "scala-compiler.jar" || jar.getName.startsWith("scala3-compiler_3")
|
||||||
Seq.empty,
|
}) match
|
||||||
state.value,
|
case Array(compilerJar) if libraryJars.nonEmpty =>
|
||||||
scalaInstanceTopLoader.value
|
makeScalaInstance(
|
||||||
)
|
sv,
|
||||||
case _ => ScalaInstance(version, scalaProvider)
|
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`
|
// Returns the ScalaInstance only if it was not constructed via `update`
|
||||||
|
|||||||
Reference in New Issue
Block a user