From 9b97108db40664327d24dd139b1b4e28a4200d26 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Wed, 27 Jun 2018 02:31:37 +0300 Subject: [PATCH] Fix getting plugin version for kotlinKaptWorkerDependencies configuration Previously the configuration would not work for non-android projects, because it looked only at KotlinAndroidPluginWrapper for plugin version --- .../kotlin/gradle/internal/AndroidSubplugin.kt | 5 ++++- .../kotlin/gradle/plugin/KotlinPluginWrapper.kt | 11 +++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt index d1d7184fcf0..70e2c4eca2b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt @@ -46,7 +46,10 @@ class AndroidExtensionsSubpluginIndicator : Plugin { } private fun addAndroidExtensionsRuntimeIfNeeded(project: Project) { - val kotlinPluginVersion = project.getKotlinPluginVersion() ?: return + val kotlinPluginVersion = project.getKotlinPluginVersion() ?: run { + project.logger.error("Kotlin plugin should be enabled before 'kotlin-android-extensions'") + return + } project.configurations.all { configuration -> val name = configuration.name diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt index c449f226a3b..1a8ceaff010 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.dsl.createKotlinExtension import org.jetbrains.kotlin.gradle.internal.KotlinSourceSetProviderImpl import org.jetbrains.kotlin.gradle.tasks.* +import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import java.io.FileNotFoundException import java.util.* import javax.inject.Inject @@ -82,14 +83,8 @@ open class Kotlin2JsPluginWrapper @Inject constructor(fileResolver: FileResolver Kotlin2JsPlugin(Kotlin2JsTasksProvider(), KotlinSourceSetProviderImpl(fileResolver), kotlinPluginVersion) } -fun Project.getKotlinPluginVersion(): String? { - val kotlinPluginWrapper = plugins.findPlugin(KotlinAndroidPluginWrapper::class.java) ?: run { - project.logger.error("'kotlin-android' plugin should be enabled before 'kotlin-android-extensions'") - return null - } - - return kotlinPluginWrapper.kotlinPluginVersion -} +fun Project.getKotlinPluginVersion(): String? = + plugins.asSequence().mapNotNull { (it as? KotlinBasePluginWrapper)?.kotlinPluginVersion }.firstOrNull() private fun Any.loadKotlinVersionFromResource(log: Logger): String { log.kotlinDebug("Loading version information")