diff --git a/jps/jps-plugin/jps-plugin.iml b/jps/jps-plugin/jps-plugin.iml
index 59e6dad560b..f5fcf5cec86 100644
--- a/jps/jps-plugin/jps-plugin.iml
+++ b/jps/jps-plugin/jps-plugin.iml
@@ -21,5 +21,6 @@
+
\ 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 3d207d68a12..df4af961c7c 100644
--- a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt
+++ b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt
@@ -33,7 +33,20 @@ import java.rmi.server.UnicastRemoteObject
import java.util.*
class JpsKotlinCompilerRunner : KotlinCompilerRunner() {
- override val log: KotlinLogger = JpsKotlinLogger(KotlinBuilder.LOG)
+ override val log: KotlinLogger = JpsKotlinLogger(KotlinBuilder.LOG)
+
+ private var compilerSettings: CompilerSettings? = null
+
+ private inline fun withCompilerSettings(settings: CompilerSettings, fn: ()->Unit) {
+ val old = compilerSettings
+ try {
+ compilerSettings = settings
+ fn()
+ }
+ finally {
+ compilerSettings = old
+ }
+ }
companion object {
private @Volatile var jpsDaemonConnection: DaemonConnection? = null
@@ -48,10 +61,9 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() {
) {
val arguments = mergeBeans(commonArguments, k2jvmArguments)
setupK2JvmArguments(moduleFile, arguments)
- val additionalArguments = compilerSettings.additionalArguments.split(" ").toTypedArray()
- parseArguments(additionalArguments, arguments)
-
- runCompiler(K2JVM_COMPILER, arguments, environment)
+ withCompilerSettings(compilerSettings) {
+ runCompiler(K2JVM_COMPILER, arguments, environment)
+ }
}
fun runK2JsCompiler(
@@ -65,10 +77,9 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() {
) {
val arguments = mergeBeans(commonArguments, k2jsArguments)
setupK2JsArguments(outputFile, sourceFiles, libraryFiles, arguments)
- val additionalArguments = compilerSettings.additionalArguments.split(" ").toTypedArray()
- parseArguments(additionalArguments, arguments)
-
- runCompiler(K2JS_COMPILER, arguments, environment)
+ withCompilerSettings(compilerSettings) {
+ runCompiler(K2JS_COMPILER, arguments, environment)
+ }
}
override fun compileWithDaemonOrFallback(
@@ -104,7 +115,9 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() {
val compilerMode = CompilerMode.JPS_COMPILER
val verbose = compilerArgs.verbose
val options = CompilationOptions(compilerMode, targetPlatform, reportCategories(verbose), reportSeverity(verbose), requestedCompilationResults = emptyArray())
- daemon.compile(sessionId, compilerArgs, options, JpsCompilerServicesFacadeImpl(environment), null)
+ val allArgs = ArgumentUtils.convertArgumentsToStringList(compilerArgs) +
+ (compilerSettings?.additionalArguments?.split(" ") ?: emptyList())
+ daemon.compile(sessionId, allArgs.toTypedArray(), options, JpsCompilerServicesFacadeImpl(environment), null)
}
return res?.get()?.let { exitCodeFromProcessExitCode(it) }