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 e1990257ad3..73f16541511 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt @@ -138,21 +138,14 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() { val compilerMode = CompilerMode.JPS_COMPILER val verbose = compilerArgs.verbose val options = CompilationOptions(compilerMode, targetPlatform, reportCategories(verbose), reportSeverity(verbose), requestedCompilationResults = emptyArray()) - val res = daemon.compile(sessionId, serializeWithAdditionalCompilerArgs(compilerArgs), options, JpsCompilerServicesFacadeImpl(environment), null) + val res = daemon.compile(sessionId, withAdditionalCompilerArgs(compilerArgs), options, JpsCompilerServicesFacadeImpl(environment), null) return exitCodeFromProcessExitCode(res.get()) } - private fun withAdditionalArguments(compilerArgs: CommonCompilerArguments): CommonCompilerArguments { - val compilerSettings = compilerSettings ?: return compilerArgs - return copyBean(compilerArgs).apply { - parseArguments(compilerSettings.additionalArgumentsAsList.toTypedArray(), this) - freeArgs.addAll(0, compilerArgs.freeArgs) - unknownExtraFlags.addAll(0, compilerArgs.unknownExtraFlags) - } - } - - private fun serializeWithAdditionalCompilerArgs(compilerArgs: CommonCompilerArguments): Array { - return ArgumentUtils.convertArgumentsToStringList(withAdditionalArguments(compilerArgs)).toTypedArray() + private fun withAdditionalCompilerArgs(compilerArgs: CommonCompilerArguments): Array { + val allArgs = ArgumentUtils.convertArgumentsToStringList(compilerArgs) + + (compilerSettings?.additionalArgumentsAsList ?: emptyList()) + return allArgs.toTypedArray() } private fun reportCategories(verbose: Boolean): Array { @@ -193,7 +186,7 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() { if (System.getProperty(GlobalOptions.COMPILE_PARALLEL_OPTION, "false").toBoolean()) System.setProperty(KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY, "true") - val rc = CompilerRunnerUtil.invokeExecMethod(compilerClassName, serializeWithAdditionalCompilerArgs(compilerArgs), environment, out) + val rc = CompilerRunnerUtil.invokeExecMethod(compilerClassName, withAdditionalCompilerArgs(compilerArgs), environment, out) // exec() returns an ExitCode object, class of which is loaded with a different class loader, // so we take it's contents through reflection