From 3836dcab85d08b50066cd1beb2a2693e99888afd Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Fri, 16 Feb 2018 15:11:40 +0300 Subject: [PATCH] Fix -Xmulti-platform dropped from args when freeCompilerArgs is assigned in user build script Issue #KT-15371 Fixed --- .../org/jetbrains/kotlin/gradle/BaseGradleIT.kt | 3 +++ .../kotlin/gradle/MultiplatformGradleIT.kt | 16 ++++++++++++++++ .../gradle/plugin/KotlinMultiplatformPlugin.kt | 4 ---- .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 2 ++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index 62549d68918..bcab73913c3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -465,6 +465,9 @@ abstract class BaseGradleIT { private fun Project.createBuildCommand(wrapperDir: File, params: Array, options: BuildOptions): List = createGradleCommand(wrapperDir, createGradleTailParameters(options, params)) + fun Project.gradleBuildScript(subproject: String? = null): File = + File(projectDir, subproject?.plus("/").orEmpty() + "build.gradle") + private fun Project.createGradleTailParameters(options: BuildOptions, params: Array = arrayOf()): List = params.toMutableList().apply { add("--stacktrace") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt index 1a1df413468..ecf225ccbbd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt @@ -185,4 +185,20 @@ class MultiplatformGradleIT : BaseGradleIT() { } } } + + @Test + fun testFreeCompilerArgsAssignment(): Unit = with(Project("multiplatformProject")) { + setupWorkingDir() + + val overrideCompilerArgs = "kotlinOptions.freeCompilerArgs = ['-verbose']" + + gradleBuildScript("lib").appendText("\ncompileKotlinCommon.$overrideCompilerArgs") + gradleBuildScript("libJvm").appendText("\ncompileKotlin.$overrideCompilerArgs") + gradleBuildScript("libJs").appendText("\ncompileKotlin2Js.$overrideCompilerArgs") + + build("build") { + assertSuccessful() + assertTasksExecuted(listOf(":lib:compileKotlinCommon", ":libJvm:compileKotlin", ":libJs:compileKotlin2Js")) + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt index 472b4824694..17d67f34df6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt @@ -54,10 +54,6 @@ open class KotlinPlatformImplementationPluginBase(platformName: String) : Kotlin private val platformKotlinTasksBySourceSetName = hashMapOf>() override fun apply(project: Project) { - project.tasks.withType(AbstractKotlinCompile::class.java).all { - (it as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += listOf("-Xmulti-platform") - } - project.tasks.filterIsInstance>().associateByTo(platformKotlinTasksBySourceSetName) { it.sourceSetName } val implementConfig = project.configurations.create(IMPLEMENT_CONFIG_NAME) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 82e67e7f878..8293cab7067 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -233,6 +233,8 @@ abstract class AbstractKotlinCompile() : AbstractKo args.verbose = true } + args.multiPlatform = project.plugins.any { it is KotlinPlatformPluginBase } + setupPlugins(args) }