diff --git a/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt b/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt index 086de0868be..7b038ef6629 100644 --- a/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt +++ b/libraries/tools/kotlin-allopen/src/main/kotlin/org/jetbrains/kotlin/allopen/gradle/AllOpenSubplugin.kt @@ -16,62 +16,53 @@ package org.jetbrains.kotlin.allopen.gradle -import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.tasks.compile.AbstractCompile +import org.gradle.api.provider.Provider import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry import org.jetbrains.kotlin.allopen.gradle.model.builder.AllOpenModelBuilder import org.jetbrains.kotlin.gradle.plugin.* import javax.inject.Inject -class AllOpenGradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : Plugin { +class AllOpenGradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : + KotlinCompilerPluginSupportPlugin { companion object { - fun isEnabled(project: Project) = project.plugins.findPlugin(AllOpenGradleSubplugin::class.java) != null - fun getAllOpenExtension(project: Project): AllOpenExtension { return project.extensions.getByType(AllOpenExtension::class.java) } + + private const val ALLOPEN_ARTIFACT_NAME = "kotlin-allopen" + + private val ANNOTATION_ARG_NAME = "annotation" + private val PRESET_ARG_NAME = "preset" } override fun apply(project: Project) { project.extensions.create("allOpen", AllOpenExtension::class.java) registry.register(AllOpenModelBuilder()) } -} -class AllOpenKotlinGradleSubplugin : KotlinGradleSubplugin { - companion object { - const val ALLOPEN_ARTIFACT_NAME = "kotlin-allopen" + override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean = true - private val ANNOTATION_ARG_NAME = "annotation" - private val PRESET_ARG_NAME = "preset" - } + override fun applyToCompilation( + kotlinCompilation: KotlinCompilation<*> + ): Provider> { + val project = kotlinCompilation.target.project - override fun isApplicable(project: Project, task: AbstractCompile) = AllOpenGradleSubplugin.isEnabled(project) + val allOpenExtension = project.extensions.getByType(AllOpenExtension::class.java) - override fun apply( - project: Project, - kotlinCompile: AbstractCompile, - javaCompile: AbstractCompile?, - variantData: Any?, - androidProjectHandler: Any?, - kotlinCompilation: KotlinCompilation<*>? - ): List { - if (!AllOpenGradleSubplugin.isEnabled(project)) return emptyList() + return project.provider { + val options = mutableListOf() - val allOpenExtension = project.extensions.findByType(AllOpenExtension::class.java) ?: return emptyList() + for (anno in allOpenExtension.myAnnotations) { + options += SubpluginOption(ANNOTATION_ARG_NAME, anno) + } - val options = mutableListOf() + for (preset in allOpenExtension.myPresets) { + options += SubpluginOption(PRESET_ARG_NAME, preset) + } - for (anno in allOpenExtension.myAnnotations) { - options += SubpluginOption(ANNOTATION_ARG_NAME, anno) + options } - - for (preset in allOpenExtension.myPresets) { - options += SubpluginOption(PRESET_ARG_NAME, preset) - } - - return options } override fun getCompilerPluginId() = "org.jetbrains.kotlin.allopen" diff --git a/libraries/tools/kotlin-allopen/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin b/libraries/tools/kotlin-allopen/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin deleted file mode 100644 index 5f04def2d18..00000000000 --- a/libraries/tools/kotlin-allopen/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin +++ /dev/null @@ -1 +0,0 @@ -org.jetbrains.kotlin.allopen.gradle.AllOpenKotlinGradleSubplugin \ No newline at end of file