From 28fe070a2f39701a0e392004349dd82c1e12ec9b Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Fri, 30 Apr 2021 09:11:55 +0200 Subject: [PATCH] Track plugin options with indices --- .../mpp/pm20/GradleKpmCompilerPlugin.kt | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt index 0e5b1339e1f..98597e9da7e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmCompilerPlugin.kt @@ -51,7 +51,7 @@ internal class CompilerPluginOptionsBuilder( ) { private val pluginOptions = CompilerPluginOptions() private val artifacts = mutableListOf() - private val gradleInputs = mutableMapOf() + private val gradleInputs = mutableMapOf>() private val gradleInputFiles = mutableSetOf() operator fun plusAssign(pluginData: PluginData) { @@ -72,9 +72,13 @@ internal class CompilerPluginOptionsBuilder( } } - private fun addToInputs(pluginId: String, option: PluginOption) = when(option) { - is FilesOption -> gradleInputFiles += option.files - is StringOption -> gradleInputs["${pluginId}.${option.key}"] = option.value + private fun addToInputs(pluginId: String, option: PluginOption) { + when(option) { + is FilesOption -> gradleInputFiles += option.files + is StringOption -> gradleInputs + .getOrPut("${pluginId}.${option.key}") { mutableListOf() } + .add(option.value) + } } fun build(): KotlinCompilerPluginData { @@ -89,11 +93,22 @@ internal class CompilerPluginOptionsBuilder( return KotlinCompilerPluginData( classpath = pluginClasspathConfiguration, options = pluginOptions, - inputs = gradleInputs, + inputs = gradleInputs.flattenWithIndex(), inputFiles = gradleInputFiles ) } + private fun Map>.flattenWithIndex(): Map { + val result = mutableMapOf() + + for ((key, values) in this) { + for ((index, value) in values.withIndex()) { + result["${key}.$index"] = value + } + } + + return result + } private fun PluginOption.toSubpluginOption() = when (this) { is FilesOption -> FilesSubpluginOption(key, files)