diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt
index 5f6444d7b85..79e777fe313 100644
--- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt
+++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt
@@ -38,10 +38,7 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
-import org.jetbrains.kotlin.config.JvmTarget
-import org.jetbrains.kotlin.config.LanguageFeature
-import org.jetbrains.kotlin.config.LanguageVersion
-import org.jetbrains.kotlin.config.TargetPlatformKind
+import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
import org.jetbrains.kotlin.idea.facet.*
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator
@@ -128,7 +125,6 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
when (arguments) {
is K2JVMCompilerArguments -> {
arguments.classpath = configuration?.getChild("classpath")?.text
- arguments.jdkHome = configuration?.getChild("jdkHome")?.text ?: mavenProject.properties["kotlin.compiler.jdkHome"]?.toString()
arguments.jvmTarget = configuration?.getChild("jvmTarget")?.text ?: mavenProject.properties["kotlin.compiler.jvmTarget"]?.toString()
}
is K2JSCompilerArguments -> {
diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt
index 17e7af38832..1aab34995ab 100644
--- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt
+++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt
@@ -431,7 +431,6 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
-Xcoroutines=enable
1.8
- JDK_HOME
foobar.jar
@@ -452,7 +451,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("JVM 1.8", targetPlatformKind!!.description)
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals("foobar.jar", (compilerArguments as K2JVMCompilerArguments).classpath)
- Assert.assertEquals("-jdk-home JDK_HOME -Xmulti-platform",
+ Assert.assertEquals("-Xmulti-platform",
compilerSettings!!.additionalArguments)
}
}
@@ -622,7 +621,6 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
-Xcoroutines=enable
- JDK_HOME
foobar.jar
@@ -650,8 +648,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("JVM 1.8", targetPlatformKind!!.description)
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals("foobar.jar", (compilerArguments as K2JVMCompilerArguments).classpath)
- Assert.assertEquals("-jdk-home JDK_HOME -Xmulti-platform",
- compilerSettings!!.additionalArguments)
+ Assert.assertEquals("-Xmulti-platform", compilerSettings!!.additionalArguments)
}
}
@@ -693,7 +690,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
-jvm-target
1.8
-Xcoroutines=enable
- -jdk-home
+ -classpath
c:\program files\jdk1.8
@@ -709,10 +706,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("JVM 1.8", targetPlatformKind!!.description)
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
- Assert.assertEquals(
- listOf("-jdk-home", "c:/program files/jdk1.8"),
- compilerSettings!!.additionalArgumentsAsList
- )
+ Assert.assertEquals("c:/program files/jdk1.8", (compilerArguments as K2JVMCompilerArguments).classpath)
}
}
@@ -1377,7 +1371,6 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
1.6
- temp
1.0
1.0
@@ -1387,8 +1380,6 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
1.1
-api-version
1.1
- -jdk-home
- c:\program files\jdk1.8
@@ -1404,10 +1395,6 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("1.1", languageLevel!!.description)
Assert.assertEquals("1.1", apiLevel!!.description)
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
- Assert.assertEquals(
- listOf("-jdk-home", "c:\\program files\\jdk1.8"),
- compilerSettings!!.additionalArgumentsAsList
- )
}
}
@@ -1447,12 +1434,13 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
1.7
- temp
1.1
1.0
-java-parameters
-Xdump-declarations-to=dumpDir
+ -kotlin-home
+ temp
@@ -1555,7 +1543,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
1.8
- -jdk-home
+ -kotlin-home
temp2
@@ -1608,7 +1596,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
1.8
- -jdk-home
+ -kotlin-home
temp2
@@ -1629,7 +1617,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("1.0", apiLevel!!.description)
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals(
- listOf("-jdk-home", "temp", "-Xdump-declarations-to=dumpDir2"),
+ listOf("-Xdump-declarations-to=dumpDir2"),
compilerSettings!!.additionalArgumentsAsList
)
}
@@ -1640,7 +1628,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("1.0", apiLevel!!.description)
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals(
- listOf("-jdk-home", "temp2", "-java-parameters", "-Xdump-declarations-to=dumpDir"),
+ listOf("-kotlin-home", "temp2", "-java-parameters", "-Xdump-declarations-to=dumpDir"),
compilerSettings!!.additionalArgumentsAsList
)
}
@@ -1651,7 +1639,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("1.1", apiLevel!!.description)
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals(
- listOf("-jdk-home", "temp2"),
+ listOf("-kotlin-home", "temp2"),
compilerSettings!!.additionalArgumentsAsList
)
}
diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt
index 9ead2e9abc8..7d233dd5ddf 100644
--- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt
@@ -177,6 +177,12 @@ private val CommonCompilerArguments.primaryFields: List
else -> commonPrimaryFields
}
+private val CommonCompilerArguments.ignoredFields: List
+ get() = when (this) {
+ is K2JVMCompilerArguments -> listOf(K2JVMCompilerArguments::noJdk.name, K2JVMCompilerArguments::jdkHome.name)
+ else -> emptyList()
+ }
+
fun parseCompilerArgumentsToFacet(arguments: List, defaultArguments: List, kotlinFacet: KotlinFacet) {
val argumentArray = arguments.toTypedArray()
@@ -191,15 +197,16 @@ fun parseCompilerArgumentsToFacet(arguments: List, defaultArguments: Lis
compilerArguments.convertPathsToSystemIndependent()
- // Retain only fields exposed in facet configuration editor.
+ // Retain only fields exposed (and not explicitly ignored) in facet configuration editor.
// The rest is combined into string and stored in CompilerSettings.additionalArguments
val primaryFields = compilerArguments.primaryFields
+ val ignoredFields = compilerArguments.ignoredFields
fun exposeAsAdditionalArgument(field: Field) = field.name !in primaryFields && field.get(compilerArguments) != field.get(defaultCompilerArguments)
val additionalArgumentsString = with(compilerArguments::class.java.newInstance()) {
- copyFieldsSatisfying(compilerArguments, this, ::exposeAsAdditionalArgument)
+ copyFieldsSatisfying(compilerArguments, this) { exposeAsAdditionalArgument(it) && it.name !in ignoredFields }
ArgumentUtils.convertArgumentsToStringList(this).joinToString(separator = " ") {
if (StringUtil.containsWhitespaces(it) || it.startsWith('"')) {
StringUtil.wrapWithDoubleQuote(StringUtil.escapeQuotes(it))
@@ -210,7 +217,7 @@ fun parseCompilerArgumentsToFacet(arguments: List, defaultArguments: Lis
if (additionalArgumentsString.isNotEmpty()) additionalArgumentsString else CompilerSettings.DEFAULT_ADDITIONAL_ARGUMENTS
with(compilerArguments::class.java.newInstance()) {
- copyFieldsSatisfying(this, compilerArguments, ::exposeAsAdditionalArgument)
+ copyFieldsSatisfying(this, compilerArguments) { exposeAsAdditionalArgument(it) || it.name in ignoredFields }
}
}
}
diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt
index a34384a3eb5..3d2099a3fa0 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt
@@ -704,14 +704,14 @@ class GradleFacetImportTest : GradleImportingTestCase() {
apply plugin: 'kotlin-platform-jvm'
compileKotlin {
- kotlinOptions.jdkHome = "c:\\program files\\jdk1.8"
+ kotlinOptions.freeCompilerArgs = ["-module", "module with spaces"]
}
""")
importProject()
with (facetSettings) {
Assert.assertEquals(
- listOf("-jdk-home", "c:/program files/jdk1.8", "-Xmulti-platform"),
+ listOf("-module", "module with spaces"),
compilerSettings!!.additionalArgumentsAsList
)
}