diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 003ec84e7..46ed8b155 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -88,6 +88,7 @@ import sbt.util.InterfaceUtil.{ t2, toJavaFunction => f1 } import sbt.util._ import sjsonnew._ import sjsonnew.support.scalajson.unsafe.Converter +import xsbti.compile.TastyFiles import xsbti.{ FileConverter, Position } import scala.collection.immutable.ListMap @@ -681,6 +682,7 @@ object Defaults extends BuildCommon { // must be a val: duplication detected by object identity private[this] lazy val compileBaseGlobal: Seq[Setting[_]] = globalDefaults( Seq( + auxiliaryClassFiles := Nil, incOptions := IncOptions.of(), classpathOptions :== ClasspathOptionsUtil.boot, classpathOptions in console :== ClasspathOptionsUtil.repl, @@ -876,9 +878,14 @@ object Defaults extends BuildCommon { compileAnalysisTargetRoot.value / compileAnalysisFilename.value }, externalHooks := IncOptions.defaultExternal, + auxiliaryClassFiles ++= { + if (ScalaArtifacts.isScala3(scalaVersion.value)) List(TastyFiles.instance) + else Nil + }, incOptions := { val old = incOptions.value old + .withAuxiliaryClassFiles(auxiliaryClassFiles.value.toArray) .withExternalHooks(externalHooks.value) .withClassfileManagerType( Option( diff --git a/main/src/main/scala/sbt/Keys.scala b/main/src/main/scala/sbt/Keys.scala index 2df1d1e3f..540648454 100644 --- a/main/src/main/scala/sbt/Keys.scala +++ b/main/src/main/scala/sbt/Keys.scala @@ -248,6 +248,7 @@ object Keys { val aggregate = settingKey[Boolean]("Configures task aggregation.").withRank(BMinusSetting) val sourcePositionMappers = taskKey[Seq[xsbti.Position => Option[xsbti.Position]]]("Maps positions in generated source files to the original source it was generated from").withRank(DTask) private[sbt] val externalHooks = taskKey[ExternalHooks]("The external hooks used by zinc.") + val auxiliaryClassFiles = taskKey[Seq[AuxiliaryClassFiles]]("The auxiliary class files that must be managed by Zinc (for instance the TASTy files)") val fileConverter = settingKey[FileConverter]("The file converter used to convert between Path and VirtualFile") val allowMachinePath = settingKey[Boolean]("Allow machine-specific paths during conversion.") val reportAbsolutePath = settingKey[Boolean]("Report absolute paths during compilation.")