diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 94a72e521..d05bfbe05 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -307,12 +307,21 @@ object Defaults extends BuildCommon { if (plugin) scalaBase / ("sbt-" + sbtv) else scalaBase } - def compilersSetting = compilers := { - val compilers = Compiler.compilers(scalaInstance.value, classpathOptions.value, javaHome.value, - bootIvyConfiguration.value, fileToStore.value, scalaCompilerBridgeSource.value)(appConfiguration.value, streams.value.log) - if (!java.lang.Boolean.getBoolean("sbt.disable.interface.classloader.cache")) - compilers.scalac.setClassLoaderCache(state.value.classLoaderCache) - compilers + def compilersSetting = { + compilers := { + val compilers = Compiler.compilers( + scalaInstance.value, classpathOptions.value, javaHome.value, bootIvyConfiguration.value, + fileToStore.value, scalaCompilerBridgeSource.value + )(appConfiguration.value, streams.value.log) + if (java.lang.Boolean.getBoolean("sbt.disable.interface.classloader.cache")) compilers else { + compilers.withScalac( + compilers.scalac match { + case x: AnalyzingCompiler => x.withClassLoaderCache(state.value.classLoaderCache) + case x => x + } + ) + } + } } lazy val configTasks = docTaskSettings(doc) ++ inTask(compile)(compileInputsSettings) ++ configGlobal ++ compileAnalysisSettings ++ Seq(