diff --git a/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt b/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt index a567db8354b..9dde8375484 100644 --- a/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt +++ b/libraries/tools/kotlin-sam-with-receiver/src/main/kotlin/org/jetbrains/kotlin/noarg/gradle/SamWithReceiverSubplugin.kt @@ -16,26 +16,19 @@ package org.jetbrains.kotlin.samWithReceiver.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.gradle.plugin.* import org.jetbrains.kotlin.noarg.gradle.model.builder.SamWithReceiverModelBuilder import javax.inject.Inject -class SamWithReceiverGradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : Plugin { - companion object { - fun isEnabled(project: Project) = project.plugins.findPlugin(SamWithReceiverGradleSubplugin::class.java) != null - } - +class SamWithReceiverGradleSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) : KotlinCompilerPluginSupportPlugin { override fun apply(project: Project) { project.extensions.create("samWithReceiver", SamWithReceiverExtension::class.java) registry.register(SamWithReceiverModelBuilder()) } -} -class SamWithReceiverKotlinGradleSubplugin : KotlinGradleSubplugin { companion object { const val SAM_WITH_RECEIVER_ARTIFACT_NAME = "kotlin-sam-with-receiver" @@ -43,31 +36,29 @@ class SamWithReceiverKotlinGradleSubplugin : KotlinGradleSubplugin): Boolean = true - override fun apply( - project: Project, - kotlinCompile: AbstractCompile, - javaCompile: AbstractCompile?, - variantData: Any?, - androidProjectHandler: Any?, - kotlinCompilation: KotlinCompilation<*>? - ): List { - if (!SamWithReceiverGradleSubplugin.isEnabled(project)) return emptyList() + override fun applyToCompilation( + kotlinCompilation: KotlinCompilation<*> + ): Provider> { + val project = kotlinCompilation.target.project - val samWithReceiverExtension = project.extensions.findByType(SamWithReceiverExtension::class.java) ?: return emptyList() + val samWithReceiverExtension = + project.extensions.findByType(SamWithReceiverExtension::class.java) ?: return project.provider { emptyList() } - val options = mutableListOf() + return project.provider> { + val options = mutableListOf() - for (anno in samWithReceiverExtension.myAnnotations) { - options += SubpluginOption(ANNOTATION_ARG_NAME, anno) + for (anno in samWithReceiverExtension.myAnnotations) { + options += SubpluginOption(ANNOTATION_ARG_NAME, anno) + } + + for (preset in samWithReceiverExtension.myPresets) { + options += SubpluginOption(PRESET_ARG_NAME, preset) + } + + options } - - for (preset in samWithReceiverExtension.myPresets) { - options += SubpluginOption(PRESET_ARG_NAME, preset) - } - - return options } override fun getCompilerPluginId() = "org.jetbrains.kotlin.samWithReceiver" diff --git a/libraries/tools/kotlin-sam-with-receiver/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin b/libraries/tools/kotlin-sam-with-receiver/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin deleted file mode 100644 index fb0c7a152d3..00000000000 --- a/libraries/tools/kotlin-sam-with-receiver/src/main/resources/META-INF/services/org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin +++ /dev/null @@ -1 +0,0 @@ -org.jetbrains.kotlin.samWithReceiver.gradle.SamWithReceiverKotlinGradleSubplugin \ No newline at end of file