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
Original commit: 2bb7bdfc3f
This commit is contained in:
@@ -33,7 +33,10 @@ private fun readV1Config(element: Element): KotlinFacetSettings {
|
|||||||
return KotlinFacetSettings().apply {
|
return KotlinFacetSettings().apply {
|
||||||
val useProjectSettings = element.getOptionValue("useProjectSettings")?.toBoolean()
|
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 }
|
val targetPlatform = TargetPlatformKind.ALL_PLATFORMS.firstOrNull { it.description == targetPlatformName }
|
||||||
?: TargetPlatformKind.Jvm[JvmTarget.DEFAULT]
|
?: TargetPlatformKind.Jvm[JvmTarget.DEFAULT]
|
||||||
|
|
||||||
@@ -57,6 +60,14 @@ private fun readV1Config(element: Element): KotlinFacetSettings {
|
|||||||
is K2JSCompilerArguments -> jsArgumentsElement?.let { XmlSerializer.deserializeInto(compilerArguments, it) }
|
is K2JSCompilerArguments -> jsArgumentsElement?.let { XmlSerializer.deserializeInto(compilerArguments, it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (languageLevel != null) {
|
||||||
|
compilerArguments.languageVersion = languageLevel
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apiLevel != null) {
|
||||||
|
compilerArguments.apiVersion = apiLevel
|
||||||
|
}
|
||||||
|
|
||||||
if (useProjectSettings != null) {
|
if (useProjectSettings != null) {
|
||||||
this.useProjectSettings = useProjectSettings
|
this.useProjectSettings = useProjectSettings
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user