Kotlin Facet: Escape additional compiler arguments when converting them to string and unescape before parsing
#KT-16700 Fixed
Original commit: 811b8978c2
This commit is contained in:
@@ -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<String>
|
||||
get() = StringUtil.splitHonorQuotes(additionalArguments, ' ').map {
|
||||
if (it.startsWith('"')) StringUtil.unescapeChar(StringUtil.unquoteString(it), '"') else it
|
||||
}
|
||||
@@ -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<JpsCompilerEnvironment>() {
|
||||
|
||||
private fun withAdditionalCompilerArgs(compilerArgs: CommonCompilerArguments): Array<String> {
|
||||
val allArgs = ArgumentUtils.convertArgumentsToStringList(compilerArgs) +
|
||||
(compilerSettings?.additionalArguments?.split(" ") ?: emptyList())
|
||||
(compilerSettings?.additionalArgumentsAsList ?: emptyList())
|
||||
return allArgs.toTypedArray()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user