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) }