diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/argumentUtils.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/argumentUtils.kt index 46d1ca14de5..f7f4d240ccb 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/argumentUtils.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/argumentUtils.kt @@ -41,7 +41,7 @@ fun copyBean(bean: T) = copyFields(bean, bean::class.java.newInstance( fun mergeBeans(from: From, to: To): To { // TODO: rewrite when updated version of com.intellij.util.xmlb is available on TeamCity - return copyFields(from, XmlSerializerUtil.createCopy(to), false, collectFieldsToCopy(from::class.java, false)) + return copyFields(from, to, false, collectFieldsToCopy(from::class.java, false)) } fun copyInheritedFields(from: From, to: To) = copyFields(from, to, true, collectFieldsToCopy(from::class.java, true)) diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt index 9166242434b..1608f12dd4d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt @@ -66,8 +66,8 @@ fun KotlinFacetSettings.initializeIfNeeded( if (compilerArguments == null) { val targetPlatformKind = platformKind ?: getDefaultTargetPlatform(module, rootModel) compilerArguments = targetPlatformKind.createCompilerArguments().apply { - mergeBeans(commonArguments, this) targetPlatformKind.getPlatformCompilerArgumentsByProject(module.project)?.let { mergeBeans(it, this) } + mergeBeans(commonArguments, this) } } diff --git a/idea/testData/configuration/facetWithProjectSettings/.idea/compiler.xml b/idea/testData/configuration/facetWithProjectSettings/.idea/compiler.xml new file mode 100644 index 00000000000..1c358218b27 --- /dev/null +++ b/idea/testData/configuration/facetWithProjectSettings/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/facetWithProjectSettings/.idea/copyright/profiles_settings.xml b/idea/testData/configuration/facetWithProjectSettings/.idea/copyright/profiles_settings.xml new file mode 100644 index 00000000000..e7bedf3377d --- /dev/null +++ b/idea/testData/configuration/facetWithProjectSettings/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/idea/testData/configuration/facetWithProjectSettings/.idea/kotlinc.xml b/idea/testData/configuration/facetWithProjectSettings/.idea/kotlinc.xml new file mode 100644 index 00000000000..983760c4d74 --- /dev/null +++ b/idea/testData/configuration/facetWithProjectSettings/.idea/kotlinc.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/facetWithProjectSettings/.idea/libraries/KotlinJavaRuntime.xml b/idea/testData/configuration/facetWithProjectSettings/.idea/libraries/KotlinJavaRuntime.xml new file mode 100644 index 00000000000..bcc4ed94e22 --- /dev/null +++ b/idea/testData/configuration/facetWithProjectSettings/.idea/libraries/KotlinJavaRuntime.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/facetWithProjectSettings/.idea/misc.xml b/idea/testData/configuration/facetWithProjectSettings/.idea/misc.xml new file mode 100644 index 00000000000..5a967a62c8a --- /dev/null +++ b/idea/testData/configuration/facetWithProjectSettings/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/facetWithProjectSettings/.idea/modules.xml b/idea/testData/configuration/facetWithProjectSettings/.idea/modules.xml new file mode 100644 index 00000000000..83db3b6328a --- /dev/null +++ b/idea/testData/configuration/facetWithProjectSettings/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/facetWithProjectSettings/lib/kotlin-runtime.jar b/idea/testData/configuration/facetWithProjectSettings/lib/kotlin-runtime.jar new file mode 100644 index 00000000000..24854eff673 Binary files /dev/null and b/idea/testData/configuration/facetWithProjectSettings/lib/kotlin-runtime.jar differ diff --git a/idea/testData/configuration/facetWithProjectSettings/module.iml b/idea/testData/configuration/facetWithProjectSettings/module.iml new file mode 100644 index 00000000000..155fe0c42bb --- /dev/null +++ b/idea/testData/configuration/facetWithProjectSettings/module.iml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/facetWithProjectSettings/src/foo.kt b/idea/testData/configuration/facetWithProjectSettings/src/foo.kt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt index f87d8fdf836..06c0d75b05e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt @@ -78,4 +78,12 @@ class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinTest() { Assert.assertEquals("1.0", settings.languageLevel!!.description) Assert.assertEquals("1.0", settings.apiLevel!!.description) } + + fun testFacetWithProjectSettings() { + val settings = KotlinFacetSettingsProvider.getInstance(myProject).getInitializedSettings(module) + Assert.assertEquals(true, settings.useProjectSettings) + Assert.assertEquals("1.1", settings.languageLevel!!.description) + Assert.assertEquals("1.1", settings.apiLevel!!.description) + Assert.assertEquals("-version -Xallow-kotlin-package -Xskip-metadata-version-check", settings.compilerSettings!!.additionalArguments) + } } diff --git a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt index ac426c7192d..7326e908566 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.compilerRunner +import com.intellij.util.xmlb.XmlSerializerUtil import org.jetbrains.jps.api.GlobalOptions import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY @@ -57,7 +58,7 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() { environment: JpsCompilerEnvironment, moduleFile: File ) { - val arguments = mergeBeans(commonArguments, k2jvmArguments) + val arguments = mergeBeans(commonArguments, XmlSerializerUtil.createCopy(k2jvmArguments)) setupK2JvmArguments(moduleFile, arguments) withCompilerSettings(compilerSettings) { runCompiler(K2JVM_COMPILER, arguments, environment) @@ -76,7 +77,7 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner() { log.debug("K2JS: common arguments: " + ArgumentUtils.convertArgumentsToStringList(commonArguments)) log.debug("K2JS: JS arguments: " + ArgumentUtils.convertArgumentsToStringList(k2jsArguments)) - val arguments = mergeBeans(commonArguments, k2jsArguments) + val arguments = mergeBeans(commonArguments, XmlSerializerUtil.createCopy(k2jsArguments)) log.debug("K2JS: merged arguments: " + ArgumentUtils.convertArgumentsToStringList(arguments)) setupK2JsArguments(outputFile, sourceFiles, libraries, arguments)