From 5e6148c970393165e8a5e356e467e1cf66971a3b Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Thu, 30 Aug 2018 17:39:57 +0300 Subject: [PATCH] Refactor & fix: add `allKotlinSourceSets` and use it where appropriate * Some of the usages of `kotlinSourceSets` should instead get all the source set from the source set hierarchies, i.e. including the ones transitively-participating in the compilation --- .../org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 6 +++--- .../kotlin/gradle/plugin/KotlinTargetConfigurator.kt | 3 +-- .../kotlin/gradle/plugin/mpp/kotlinCompilations.kt | 3 +++ 3 files changed, 7 insertions(+), 5 deletions(-) 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 8a0d6e219c5..c41a9349c33 100755 --- 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 @@ -159,7 +159,7 @@ internal class Kotlin2JvmSourceSetProcessor( appliedPlugins .flatMap { it.getSubpluginKotlinTasks(project, kotlinTask) } - .forEach { plugin -> kotlinCompilation.kotlinSourceSets.forEach { sourceSet -> plugin.source(sourceSet.kotlin) } } + .forEach { plugin -> kotlinCompilation.allKotlinSourceSets.forEach { sourceSet -> plugin.source(sourceSet.kotlin) } } javaTask?.let { configureJavaTask(kotlinTask, it, logger) } @@ -269,7 +269,7 @@ internal class Kotlin2JsSourceSetProcessor( appliedPlugins .flatMap { it.getSubpluginKotlinTasks(project, kotlinTask) } - .forEach { task -> kotlinCompilation.kotlinSourceSets.forEach { sourceSet -> task.source(sourceSet.kotlin) } } + .forEach { task -> kotlinCompilation.allKotlinSourceSets.forEach { sourceSet -> task.source(sourceSet.kotlin) } } } } @@ -307,7 +307,7 @@ internal class KotlinCommonSourceSetProcessor( ) appliedPlugins .flatMap { it.getSubpluginKotlinTasks(project, kotlinTask) } - .forEach { kotlinCompilation.kotlinSourceSets.forEach { sourceSet -> it.source(sourceSet.kotlin) } } + .forEach { kotlinCompilation.allKotlinSourceSets.forEach { sourceSet -> it.source(sourceSet.kotlin) } } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 7861b9c70c2..3e2b9ded83a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -97,8 +97,7 @@ abstract class AbstractKotlinTargetConfigurator } if (compilation is KotlinCompilationWithResources) { - val sourceSetHierarchy = compilation.kotlinSourceSets.flatMap { it.getSourceSetHierarchy() }.distinct() - configureResourceProcessing(compilation, project.files(Callable { sourceSetHierarchy.map { it.resources } })) + configureResourceProcessing(compilation, project.files(Callable { compilation.allKotlinSourceSets.map { it.resources } })) } createLifecycleTask(compilation) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index 6fe106d5eac..bdb4143a68d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -145,6 +145,9 @@ abstract class AbstractKotlinCompilation( override fun toString(): String = "compilation '$compilationName' ($target)" } +val KotlinCompilation.allKotlinSourceSets: Set + get() = kotlinSourceSets.flatMapTo(mutableSetOf()) { it.getSourceSetHierarchy() } + abstract class AbstractKotlinCompilationToRunnableFiles( target: KotlinTarget, name: String