diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index d741cba399a..0c830ec9c45 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -62,10 +62,10 @@ abstract class KotlinSourceSetProcessor( } private fun createKotlinSourceSet(): KotlinSourceSet { - logger.kotlinDebug("Creating KotlinSourceSet for source set $sourceSet") + logger.kotlinDebug("Creating KotlinSourceSet for $sourceSet") val kotlinSourceSet = kotlinSourceSetProvider.create(sourceSet.name) kotlinSourceSet.kotlin.srcDir(project.file(sourceRootDir)) - sourceSet.addExtension(dslExtensionName, kotlinSourceSet) + sourceSet.addConvention(dslExtensionName, kotlinSourceSet) return kotlinSourceSet } @@ -272,7 +272,7 @@ open class KotlinAndroidPlugin( log.kotlinDebug("Creating KotlinSourceSet for source set $sourceSet") val kotlinSourceSet = kotlinSourceSetProvider.create(sourceSet.name) kotlinSourceSet.kotlin.srcDir(project.file(project.file("src/${sourceSet.name}/kotlin"))) - sourceSet.addExtension(KOTLIN_DSL_NAME, kotlinSourceSet) + sourceSet.addConvention(KOTLIN_DSL_NAME, kotlinSourceSet) aptConfigurations.put(sourceSet.name, project.createAptConfiguration(sourceSet.name, kotlinAnnotationProcessingDep)) @@ -367,7 +367,7 @@ open class KotlinAndroidPlugin( val logger = kotlinTask.project.logger for (provider in variantData.sourceProviders) { - val kotlinSourceSet = provider.findExtension(KOTLIN_DSL_NAME) as? KotlinSourceSet ?: continue + val kotlinSourceSet = provider.getConvention(KOTLIN_DSL_NAME) as? KotlinSourceSet ?: continue kotlinTask.source(kotlinSourceSet.kotlin) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt index af93adecb5c..cbb7aca7f52 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Task import org.gradle.api.file.FileCollection +import org.gradle.api.internal.HasConvention import org.gradle.api.logging.Logger import org.gradle.api.plugins.ExtensionAware import org.gradle.api.tasks.compile.AbstractCompile @@ -33,12 +34,15 @@ fun AbstractCompile.mapClasspath(fn: ()->FileCollection) { conventionMapping.map("classpath", fn) } +internal inline fun Any.addConvention(name: String, plugin: T) { + (this as HasConvention).convention.plugins[name] = plugin +} + internal inline fun Any.addExtension(name: String, extension: T) = (this as ExtensionAware).extensions.add(name, extension) -internal fun Any.findExtension(name: String): Any? = - (this as ExtensionAware).extensions.findByName(name) - +internal fun Any.getConvention(name: String): Any? = + (this as HasConvention).convention.plugins[name] internal fun Logger.kotlinDebug(message: String) { this.debug("[KOTLIN] $message")