From 9759f1e06704300294537fb5be3235128cd88e5b Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 7 Mar 2017 21:21:51 +0300 Subject: [PATCH] Kotlin Facet: Escape additional compiler arguments when converting them to string and unescape before parsing #KT-16700 Fixed Original commit: 811b8978c21e412101049d19c237317a45c1d52d --- .../src/org/jetbrains/kotlin/config/CompilerSettings.kt | 7 +++++++ .../kotlin/compilerRunner/JpsKotlinCompilerRunner.kt | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt index 89af21eee09..67326926e1c 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.config +import com.intellij.openapi.util.text.StringUtil + class CompilerSettings { @JvmField var additionalArguments: String = DEFAULT_ADDITIONAL_ARGUMENTS @JvmField var scriptTemplates: String = "" @@ -28,3 +30,8 @@ class CompilerSettings { private val DEFAULT_OUTPUT_DIRECTORY = "lib" } } + +val CompilerSettings.additionalArgumentsAsList: List + get() = StringUtil.splitHonorQuotes(additionalArguments, ' ').map { + if (it.startsWith('"')) StringUtil.unescapeChar(StringUtil.unquoteString(it), '"') else it + } \ No newline at end of file diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt index 485f72aee0b..447b226c316 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.cli.common.arguments.mergeBeans import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.config.CompilerSettings +import org.jetbrains.kotlin.config.additionalArgumentsAsList import org.jetbrains.kotlin.daemon.common.* import org.jetbrains.kotlin.jps.build.KotlinBuilder import java.io.ByteArrayOutputStream @@ -129,7 +130,7 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() { private fun withAdditionalCompilerArgs(compilerArgs: CommonCompilerArguments): Array { val allArgs = ArgumentUtils.convertArgumentsToStringList(compilerArgs) + - (compilerSettings?.additionalArguments?.split(" ") ?: emptyList()) + (compilerSettings?.additionalArgumentsAsList ?: emptyList()) return allArgs.toTypedArray() }