From 42fb17d2c13d579acffece834c40c3a36cb44a53 Mon Sep 17 00:00:00 2001 From: Jorge Vicente Cantero Date: Tue, 14 May 2024 20:18:42 -0700 Subject: [PATCH] Fix compiles in Scala 2.11 --- .../integrations/gradle/BloopPlugin.scala | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/src/main/scala/bloop/integrations/gradle/BloopPlugin.scala b/src/main/scala/bloop/integrations/gradle/BloopPlugin.scala index 1cc245bc..6d603a27 100644 --- a/src/main/scala/bloop/integrations/gradle/BloopPlugin.scala +++ b/src/main/scala/bloop/integrations/gradle/BloopPlugin.scala @@ -41,15 +41,32 @@ final class BloopPlugin extends Plugin[Project] { // This configuration is not meant to be consumed by other projects bloopConfig.setCanBeConsumed(false) - val incompatibleConfigurations = Set[String]( - "incrementalScalaAnalysisElements", - "incrementalScalaAnalysisFormain", - "incrementalScalaAnalysisFortest", - "zinc" - ) + extendCompatibleConfigurationAfterEvaluate(project, bloopConfig) + + // Creates two tasks: one to configure the plugin and the other one to generate the config files + val configureBloopInstall = + project.createTask[ConfigureBloopInstallTask]("configureBloopInstall") + val bloopInstall = project.createTask[BloopInstallTask]("bloopInstall") + configureBloopInstall.installTask = Some(bloopInstall) + bloopInstall.dependsOn(configureBloopInstall) + () + } + + private[this] val incompatibleConfigurations = Set[String]( + "incrementalScalaAnalysisElements", + "incrementalScalaAnalysisFormain", + "incrementalScalaAnalysisFortest", + "incrementalScalaAnalysisForintegtest", + "zinc" + ) - project.afterEvaluate { (project: Project) => - project.getConfigurations.forEach { (config: Configuration) => + def extendCompatibleConfigurationAfterEvaluate( + project: Project, + bloopConfig: Configuration + ): Unit = { + // Use consumer instead of Scala closure because of Scala 2.11 compat + val extendConfigurationIfCompatible = new java.util.function.Consumer[Configuration] { + def accept(config: Configuration): Unit = { if ( config != bloopConfig && config.isCanBeResolved && !incompatibleConfigurations.contains(config.getName()) @@ -59,12 +76,14 @@ final class BloopPlugin extends Plugin[Project] { } } - // Creates two tasks: one to configure the plugin and the other one to generate the config files - val configureBloopInstall = - project.createTask[ConfigureBloopInstallTask]("configureBloopInstall") - val bloopInstall = project.createTask[BloopInstallTask]("bloopInstall") - configureBloopInstall.installTask = Some(bloopInstall) - bloopInstall.dependsOn(configureBloopInstall) - () + // Important to do this after evaluation so Gradle can add all the necessary project configuration before we extend them + project.afterEvaluate( + // Use Action instead of Scala closure because of Scala 2.11 compat + new org.gradle.api.Action[Project] { + def execute(project: Project): Unit = { + project.getConfigurations.forEach(extendConfigurationIfCompatible) + } + } + ) } }