Kotlin Facet: Fix reading of v1 configuration
Favor language/api version specified in <versionInfo> element in case it differs from the one in <option name="_commonCompilerArguments"> #KT-16861 Fixed
This commit is contained in:
@@ -33,7 +33,10 @@ private fun readV1Config(element: Element): KotlinFacetSettings {
|
||||
return KotlinFacetSettings().apply {
|
||||
val useProjectSettings = element.getOptionValue("useProjectSettings")?.toBoolean()
|
||||
|
||||
val targetPlatformName = element.getOptionBody("versionInfo")?.getOptionValue("targetPlatformName")
|
||||
val versionInfoElement = element.getOptionBody("versionInfo")
|
||||
val targetPlatformName = versionInfoElement?.getOptionValue("targetPlatformName")
|
||||
val languageLevel = versionInfoElement?.getOptionValue("languageLevel")
|
||||
val apiLevel = versionInfoElement?.getOptionValue("apiLevel")
|
||||
val targetPlatform = TargetPlatformKind.ALL_PLATFORMS.firstOrNull { it.description == targetPlatformName }
|
||||
?: TargetPlatformKind.Jvm[JvmTarget.DEFAULT]
|
||||
|
||||
@@ -57,6 +60,14 @@ private fun readV1Config(element: Element): KotlinFacetSettings {
|
||||
is K2JSCompilerArguments -> jsArgumentsElement?.let { XmlSerializer.deserializeInto(compilerArguments, it) }
|
||||
}
|
||||
|
||||
if (languageLevel != null) {
|
||||
compilerArguments.languageVersion = languageLevel
|
||||
}
|
||||
|
||||
if (apiLevel != null) {
|
||||
compilerArguments.apiVersion = apiLevel
|
||||
}
|
||||
|
||||
if (useProjectSettings != null) {
|
||||
this.useProjectSettings = useProjectSettings
|
||||
}
|
||||
|
||||
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Kotlin2JsCompilerArguments">
|
||||
<option name="sourceMap" value="true" />
|
||||
<option name="moduleKind" value="amd" />
|
||||
<option name="outputPrefix" value="pre_" />
|
||||
<option name="outputPostfix" value="_post" />
|
||||
</component>
|
||||
<component name="KotlinCommonCompilerArguments">
|
||||
<option name="suppressWarnings" value="true" />
|
||||
</component>
|
||||
<component name="KotlinCompilerSettings">
|
||||
<option name="additionalArguments" value="-version -verbose" />
|
||||
<option name="copyJsLibraryFiles" value="false" />
|
||||
<option name="outputDirectoryForJsLibraryFiles" value="libktln" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
<component name="libraryTable">
|
||||
<library name="KotlinJavaRuntime">
|
||||
<CLASSES>
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ClientPropertiesManager">
|
||||
<properties class="javax.swing.AbstractButton">
|
||||
<property name="hideActionText" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JComponent">
|
||||
<property name="html.disable" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JEditorPane">
|
||||
<property name="JEditorPane.w3cLengthUnits" class="java.lang.Boolean" />
|
||||
<property name="JEditorPane.honorDisplayProperties" class="java.lang.Boolean" />
|
||||
<property name="charset" class="java.lang.String" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JList">
|
||||
<property name="List.isFileList" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JPasswordField">
|
||||
<property name="JPasswordField.cutCopyAllowed" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JSlider">
|
||||
<property name="Slider.paintThumbArrowShape" class="java.lang.Boolean" />
|
||||
<property name="JSlider.isFilled" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JTable">
|
||||
<property name="Table.isFileList" class="java.lang.Boolean" />
|
||||
<property name="JTable.autoStartsEdit" class="java.lang.Boolean" />
|
||||
<property name="terminateEditOnFocusLost" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JToolBar">
|
||||
<property name="JToolBar.isRollover" class="java.lang.Boolean" />
|
||||
</properties>
|
||||
<properties class="javax.swing.JTree">
|
||||
<property name="JTree.lineStyle" class="java.lang.String" />
|
||||
</properties>
|
||||
<properties class="javax.swing.text.JTextComponent">
|
||||
<property name="caretAspectRatio" class="java.lang.Double" />
|
||||
<property name="caretWidth" class="java.lang.Integer" />
|
||||
</properties>
|
||||
</component>
|
||||
<component name="Kotlin2JvmCompilerArguments">
|
||||
<option name="jvmTarget" value="1.6" />
|
||||
</component>
|
||||
<component name="KotlinCompilerWorkspaceSettings">
|
||||
<option name="enableDaemon" value="false" />
|
||||
<option name="preciseIncrementalEnabled" value="false" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/createdIn106.iml" filepath="$PROJECT_DIR$/createdIn106.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="1">
|
||||
<option name="compilerInfo">
|
||||
<KotlinCompilerInfo>
|
||||
<option name="compilerSettings">
|
||||
<CompilerSettings>
|
||||
<option name="additionalArguments" value="-version" />
|
||||
<option name="copyJsLibraryFiles" value="true" />
|
||||
<option name="outputDirectoryForJsLibraryFiles" value="lib" />
|
||||
</CompilerSettings>
|
||||
</option>
|
||||
<option name="k2jsCompilerArguments">
|
||||
<K2JSCompilerArguments>
|
||||
<option name="outputFile" />
|
||||
<option name="noStdlib" value="false" />
|
||||
<option name="libraryFiles" />
|
||||
<option name="sourceMap" value="true" />
|
||||
<option name="metaInfo" value="false" />
|
||||
<option name="kjsm" value="false" />
|
||||
<option name="target" />
|
||||
<option name="moduleKind" value="amd" />
|
||||
<option name="main" />
|
||||
<option name="outputPrefix" value="pre_" />
|
||||
<option name="outputPostfix" value="_post" />
|
||||
<option name="languageVersion" />
|
||||
<option name="apiVersion" />
|
||||
<option name="suppressWarnings" value="false" />
|
||||
<option name="verbose" value="false" />
|
||||
<option name="version" value="false" />
|
||||
<option name="help" value="false" />
|
||||
<option name="extraHelp" value="false" />
|
||||
<option name="noInline" value="false" />
|
||||
<option name="repeat" />
|
||||
<option name="pluginClasspaths" />
|
||||
<option name="pluginOptions" />
|
||||
<option name="freeArgs">
|
||||
<list />
|
||||
</option>
|
||||
<option name="unknownExtraFlags">
|
||||
<list />
|
||||
</option>
|
||||
</K2JSCompilerArguments>
|
||||
</option>
|
||||
<option name="_commonCompilerArguments">
|
||||
<DummyImpl>
|
||||
<option name="languageVersion" />
|
||||
<option name="apiVersion" />
|
||||
<option name="suppressWarnings" value="true" />
|
||||
<option name="verbose" value="false" />
|
||||
<option name="version" value="false" />
|
||||
<option name="help" value="false" />
|
||||
<option name="extraHelp" value="false" />
|
||||
<option name="noInline" value="false" />
|
||||
<option name="repeat" />
|
||||
<option name="pluginClasspaths" />
|
||||
<option name="pluginOptions" />
|
||||
<option name="freeArgs">
|
||||
<list />
|
||||
</option>
|
||||
<option name="unknownExtraFlags">
|
||||
<list />
|
||||
</option>
|
||||
</DummyImpl>
|
||||
</option>
|
||||
</KotlinCompilerInfo>
|
||||
</option>
|
||||
<option name="versionInfo">
|
||||
<KotlinVersionInfo>
|
||||
<option name="apiLevel" value="1.0" />
|
||||
<option name="languageLevel" value="1.0" />
|
||||
<option name="targetPlatformName" value="JVM 1.6" />
|
||||
</KotlinVersionInfo>
|
||||
</option>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package test3
|
||||
|
||||
class C
|
||||
Generated
Vendored
+88
@@ -0,0 +1,88 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="1">
|
||||
<option name="compilerInfo">
|
||||
<KotlinCompilerInfo>
|
||||
<option name="compilerSettings">
|
||||
<CompilerSettings>
|
||||
<option name="additionalArguments" value="-version" />
|
||||
<option name="copyJsLibraryFiles" value="true" />
|
||||
<option name="outputDirectoryForJsLibraryFiles" value="lib" />
|
||||
</CompilerSettings>
|
||||
</option>
|
||||
<option name="k2jsCompilerArguments">
|
||||
<K2JSCompilerArguments>
|
||||
<option name="outputFile" />
|
||||
<option name="noStdlib" value="false" />
|
||||
<option name="libraryFiles" />
|
||||
<option name="sourceMap" value="true" />
|
||||
<option name="metaInfo" value="false" />
|
||||
<option name="kjsm" value="false" />
|
||||
<option name="target" />
|
||||
<option name="moduleKind" value="amd" />
|
||||
<option name="main" />
|
||||
<option name="outputPrefix" value="pre_" />
|
||||
<option name="outputPostfix" value="_post" />
|
||||
<option name="languageVersion" />
|
||||
<option name="apiVersion" />
|
||||
<option name="suppressWarnings" value="false" />
|
||||
<option name="verbose" value="false" />
|
||||
<option name="version" value="false" />
|
||||
<option name="help" value="false" />
|
||||
<option name="extraHelp" value="false" />
|
||||
<option name="noInline" value="false" />
|
||||
<option name="repeat" />
|
||||
<option name="pluginClasspaths" />
|
||||
<option name="pluginOptions" />
|
||||
<option name="freeArgs">
|
||||
<list />
|
||||
</option>
|
||||
<option name="unknownExtraFlags">
|
||||
<list />
|
||||
</option>
|
||||
</K2JSCompilerArguments>
|
||||
</option>
|
||||
<option name="_commonCompilerArguments">
|
||||
<DummyImpl>
|
||||
<option name="languageVersion" />
|
||||
<option name="apiVersion" />
|
||||
<option name="suppressWarnings" value="true" />
|
||||
<option name="verbose" value="false" />
|
||||
<option name="version" value="false" />
|
||||
<option name="help" value="false" />
|
||||
<option name="extraHelp" value="false" />
|
||||
<option name="noInline" value="false" />
|
||||
<option name="repeat" />
|
||||
<option name="pluginClasspaths" />
|
||||
<option name="pluginOptions" />
|
||||
<option name="freeArgs">
|
||||
<list />
|
||||
</option>
|
||||
<option name="unknownExtraFlags">
|
||||
<list />
|
||||
</option>
|
||||
</DummyImpl>
|
||||
</option>
|
||||
</KotlinCompilerInfo>
|
||||
</option>
|
||||
<option name="versionInfo">
|
||||
<KotlinVersionInfo>
|
||||
<option name="apiLevel" value="1.0" />
|
||||
<option name="languageLevel" value="1.0" />
|
||||
<option name="targetPlatformName" value="JVM 1.6" />
|
||||
</KotlinVersionInfo>
|
||||
</option>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Kotlin2JsCompilerArguments">
|
||||
<option name="sourceMap" value="true" />
|
||||
<option name="moduleKind" value="amd" />
|
||||
<option name="outputPrefix" value="pre_" />
|
||||
<option name="outputPostfix" value="_post" />
|
||||
</component>
|
||||
<component name="KotlinCommonCompilerArguments">
|
||||
<option name="suppressWarnings" value="true" />
|
||||
</component>
|
||||
<component name="KotlinCompilerSettings">
|
||||
<option name="additionalArguments" value="-version -verbose" />
|
||||
<option name="copyJsLibraryFiles" value="false" />
|
||||
<option name="outputDirectoryForJsLibraryFiles" value="libktln" />
|
||||
</component>
|
||||
</project>
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Kotlin2JvmCompilerArguments">
|
||||
<option name="jvmTarget" value="1.6" />
|
||||
</component>
|
||||
<component name="KotlinCompilerWorkspaceSettings">
|
||||
<option name="enableDaemon" value="false" />
|
||||
<option name="preciseIncrementalEnabled" value="false" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/createdIn107.iml" filepath="$PROJECT_DIR$/.idea/createdIn107.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package test1
|
||||
|
||||
class A
|
||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.configuration
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.impl.ApplicationImpl
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
@@ -62,4 +63,18 @@ class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinTest() {
|
||||
Assert.assertEquals(LanguageVersion.KOTLIN_1_1, module.languageVersionSettings.languageVersion)
|
||||
Assert.assertTrue(project.baseDir.findFileByRelativePath(".idea/kotlinc.xml") == null)
|
||||
}
|
||||
|
||||
fun testProject106InconsistentVersionInConfig() {
|
||||
val settings = KotlinFacetSettingsProvider.getInstance(myProject).getSettings(module)
|
||||
Assert.assertEquals(false, settings.useProjectSettings)
|
||||
Assert.assertEquals("1.0", settings.languageLevel!!.description)
|
||||
Assert.assertEquals("1.0", settings.apiLevel!!.description)
|
||||
}
|
||||
|
||||
fun testProject107InconsistentVersionInConfig() {
|
||||
val settings = KotlinFacetSettingsProvider.getInstance(myProject).getSettings(module)
|
||||
Assert.assertEquals(false, settings.useProjectSettings)
|
||||
Assert.assertEquals("1.0", settings.languageLevel!!.description)
|
||||
Assert.assertEquals("1.0", settings.apiLevel!!.description)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user