Merge pull request #6481 from adpi2/backport-mk-scala-instance

Backport #6480: Expose makeScalaInstance publicly
This commit is contained in:
eugene yokota 2021-05-02 20:50:46 -04:00 committed by GitHub
commit ccca321a0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 10 deletions

View File

@ -35,7 +35,7 @@ import sbt.Scope.{ GlobalScope, ThisScope, fillTaskAxis }
import sbt.coursierint._ import sbt.coursierint._
import sbt.internal.CommandStrings.ExportStream import sbt.internal.CommandStrings.ExportStream
import sbt.internal._ import sbt.internal._
import sbt.internal.classpath.{ AlternativeZincUtil, ClassLoaderCache } import sbt.internal.classpath.AlternativeZincUtil
import sbt.internal.inc.JavaInterfaceUtil._ import sbt.internal.inc.JavaInterfaceUtil._
import sbt.internal.inc.classpath.{ ClasspathFilter, ClasspathUtil } import sbt.internal.inc.classpath.{ ClasspathFilter, ClasspathUtil }
import sbt.internal.inc.{ CompileOutput, MappedFileConverter, Stamps, ZincLmUtil, ZincUtil } import sbt.internal.inc.{ CompileOutput, MappedFileConverter, Stamps, ZincLmUtil, ZincUtil }
@ -1077,13 +1077,12 @@ object Defaults extends BuildCommon {
val libraryJars = allJars.filter(_.getName == "scala-library.jar") val libraryJars = allJars.filter(_.getName == "scala-library.jar")
allJars.filter(_.getName == "scala-compiler.jar") match { allJars.filter(_.getName == "scala-compiler.jar") match {
case Array(compilerJar) if libraryJars.nonEmpty => case Array(compilerJar) if libraryJars.nonEmpty =>
val cache = state.value.extendedClassLoaderCache makeScalaInstance(
mkScalaInstance(
version, version,
libraryJars, libraryJars,
allJars, allJars,
Seq.empty, Seq.empty,
cache, state.value,
scalaInstanceTopLoader.value scalaInstanceTopLoader.value
) )
case _ => ScalaInstance(version, scalaProvider) case _ => ScalaInstance(version, scalaProvider)
@ -1135,21 +1134,21 @@ object Defaults extends BuildCommon {
.flatMap(_.artifacts.map(_._2)) .flatMap(_.artifacts.map(_._2))
val libraryJars = ScalaArtifacts.libraryIds(sv).map(file) val libraryJars = ScalaArtifacts.libraryIds(sv).map(file)
mkScalaInstance( makeScalaInstance(
sv, sv,
libraryJars, libraryJars,
allCompilerJars, allCompilerJars,
allDocJars, allDocJars,
state.value.extendedClassLoaderCache, state.value,
scalaInstanceTopLoader.value, scalaInstanceTopLoader.value,
) )
} }
private[this] def mkScalaInstance( private def makeScalaInstance(
version: String, version: String,
libraryJars: Array[File], libraryJars: Array[File],
allCompilerJars: Seq[File], allCompilerJars: Seq[File],
allDocJars: Seq[File], allDocJars: Seq[File],
classLoaderCache: ClassLoaderCache, state: State,
topLoader: ClassLoader, topLoader: ClassLoader,
): ScalaInstance = { ): ScalaInstance = {
// Scala 2.10 shades jline in the console so we need to make sure that it loads a compatible // Scala 2.10 shades jline in the console so we need to make sure that it loads a compatible
@ -1162,6 +1161,7 @@ object Defaults extends BuildCommon {
} }
else topLoader else topLoader
val classLoaderCache = state.extendedClassLoaderCache
val compilerJars = allCompilerJars.filterNot(libraryJars.contains).distinct.toArray val compilerJars = allCompilerJars.filterNot(libraryJars.contains).distinct.toArray
val docJars = allDocJars val docJars = allDocJars
.filterNot(jar => libraryJars.contains(jar) || compilerJars.contains(jar)) .filterNot(jar => libraryJars.contains(jar) || compilerJars.contains(jar))
@ -1196,12 +1196,12 @@ object Defaults extends BuildCommon {
case a: AutoCloseable => a.close() case a: AutoCloseable => a.close()
case _ => case _ =>
} }
mkScalaInstance( makeScalaInstance(
dummy.version, dummy.version,
dummy.libraryJars, dummy.libraryJars,
dummy.compilerJars, dummy.compilerJars,
dummy.allJars, dummy.allJars,
state.value.extendedClassLoaderCache, state.value,
scalaInstanceTopLoader.value, scalaInstanceTopLoader.value,
) )
} }