From ae47c59dc9f1ee0b998d866d9ae664955b1cf553 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Fri, 19 May 2017 14:16:47 +0300 Subject: [PATCH] Pass freeCompilerArgs unchanged to the compiler, without parsing them with the compiler loaded along the Gradle plugin. Issues: #KT-17618 Fixed (cherry picked from commit 44f7428) --- .../org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt | 5 +++-- .../jetbrains/kotlin/gradle/dsl/KotlinJsOptionsImpl.kt | 5 ++--- .../jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImpl.kt | 5 ++--- .../kotlin/gradle/dsl/KotlinJvmOptionsImplTest.kt | 8 ++------ 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 49c473424da..ff2885394d4 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -405,9 +405,9 @@ class KotlinGradleIT: BaseGradleIT() { val project = Project("kotlinProject", GRADLE_VERSION) project.setupWorkingDir() + val customModuleName = "custom_module_name" + File(project.projectDir, "build.gradle").modify { - // lazy eval is important - val customModuleName = "\${project.name}" it + """ compileKotlin { kotlinOptions.freeCompilerArgs = [ "-module-name", "$customModuleName" ] @@ -416,6 +416,7 @@ class KotlinGradleIT: BaseGradleIT() { project.build("build") { assertSuccessful() + assertFileExists("build/classes/main/META-INF/$customModuleName.kotlin_module") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsImpl.kt index ac7b19c650b..ae73b2b5350 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsImpl.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.gradle.dsl import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments -import org.jetbrains.kotlin.cli.js.K2JSCompiler internal class KotlinJsOptionsImpl : KotlinJsOptionsBase() { override var freeCompilerArgs: List = listOf() @@ -25,7 +24,7 @@ internal class KotlinJsOptionsImpl : KotlinJsOptionsBase() { override fun updateArguments(args: K2JSCompilerArguments) { super.updateArguments(args) // cast to List is important because in Groovy a GString can be inside of a list - val freeArgsArray = (freeCompilerArgs as List).map(Any::toString).toTypedArray() - K2JSCompiler().parseArguments(freeArgsArray, args) + val freeArgs = (freeCompilerArgs as List).map(Any::toString) + args.freeArgs.addAll(freeArgs) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImpl.kt index 72ed22d34b8..889eb2658e9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImpl.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.gradle.dsl import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments -import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler internal class KotlinJvmOptionsImpl : KotlinJvmOptionsBase() { override var freeCompilerArgs: List = listOf() @@ -25,7 +24,7 @@ internal class KotlinJvmOptionsImpl : KotlinJvmOptionsBase() { override fun updateArguments(args: K2JVMCompilerArguments) { super.updateArguments(args) // cast to List is important because in Groovy a GString can be inside of a list - val freeArgsArray = (freeCompilerArgs as List).map(Any::toString).toTypedArray() - K2JVMCompiler().parseArguments(freeArgsArray, args) + val freeArgs = (freeCompilerArgs as List).map(Any::toString) + args.freeArgs.addAll(freeArgs) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImplTest.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImplTest.kt index 5c83988a4d9..bd844adc53e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImplTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmOptionsImplTest.kt @@ -1,7 +1,7 @@ package org.jetbrains.kotlin.gradle.dsl import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments -import org.junit.Assert.* +import org.junit.Assert.assertEquals import org.junit.Test class KotlinJvmOptionsTest { @@ -17,10 +17,6 @@ class KotlinJvmOptionsTest { val arguments = K2JVMCompilerArguments() options.updateArguments(arguments) - assertEquals("reportPerf", true, arguments.reportPerf) - assertEquals("allowKotlinPackage", true, arguments.allowKotlinPackage) - assertEquals("inheritMultifileParts", true, arguments.inheritMultifileParts) - assertEquals("declarationsOutputPath", "declarationsPath", arguments.declarationsOutputPath) - assertArrayEquals("scriptTemplates", arrayOf("a", "b", "c"), arguments.scriptTemplates) + assertEquals(options.freeCompilerArgs, arguments.freeArgs) } } \ No newline at end of file