Skip to content

Commit f8349da

Browse files
committed
Kotlin Facet: Import compiler arguments from Maven project model
1 parent 74bfaa4 commit f8349da

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/KotlinMavenImporter.kt

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,7 @@ import org.jetbrains.kotlin.config.JvmTarget
3838
import org.jetbrains.kotlin.config.LanguageVersion
3939
import org.jetbrains.kotlin.config.TargetPlatformKind
4040
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
41-
import org.jetbrains.kotlin.idea.facet.KotlinFacet
42-
import org.jetbrains.kotlin.idea.facet.configureFacet
43-
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
44-
import org.jetbrains.kotlin.idea.facet.mavenLibraryId
41+
import org.jetbrains.kotlin.idea.facet.*
4542
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator
4643
import java.io.File
4744
import java.util.*
@@ -105,6 +102,15 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
105102
configureFacet(mavenProject, modifiableModelsProvider, module)
106103
}
107104

105+
private fun getCompilerArgumentsByConfigurationElement(configuration: Element) =
106+
configuration.getChild("args")?.getChildren("arg")?.map { it.text } ?: emptyList()
107+
108+
private val compilationGoals = listOf(PomFile.KotlinGoals.Compile,
109+
PomFile.KotlinGoals.TestCompile,
110+
PomFile.KotlinGoals.Js,
111+
PomFile.KotlinGoals.TestJs,
112+
PomFile.KotlinGoals.MetaData)
113+
108114
private fun configureFacet(mavenProject: MavenProject, modifiableModelsProvider: IdeModifiableModelsProvider, module: Module) {
109115
val mavenPlugin = mavenProject.findPlugin(KotlinMavenConfigurator.GROUP_ID, KotlinMavenConfigurator.MAVEN_PLUGIN_ID)
110116
val compilerVersion = mavenPlugin?.version ?: return
@@ -113,7 +119,16 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
113119

114120
kotlinFacet.configureFacet(compilerVersion, CoroutineSupport.DEFAULT, platform, modifiableModelsProvider)
115121
val apiVersion = mavenPlugin.configurationElement?.getChild("apiVersion")?.text?.let { LanguageVersion.fromFullVersionString(it) }
116-
kotlinFacet.configuration.settings.versionInfo.apiLevel = apiVersion
122+
val sharedArguments = mavenPlugin.configurationElement?.let { getCompilerArgumentsByConfigurationElement(it) } ?: emptyList()
123+
val executionArguments = mavenPlugin.executions?.filter { it.goals.any { it in compilationGoals } }
124+
?.firstOrNull()
125+
?.configurationElement?.let { getCompilerArgumentsByConfigurationElement(it) }
126+
?: emptyList()
127+
with(kotlinFacet.configuration.settings) {
128+
versionInfo.apiLevel = apiVersion
129+
}
130+
parseCompilerArgumentsToFacet(sharedArguments, kotlinFacet)
131+
parseCompilerArgumentsToFacet(executionArguments, kotlinFacet)
117132
MavenProjectImportHandler.getInstances(module.project).forEach { it(kotlinFacet, mavenProject) }
118133
}
119134

0 commit comments

Comments
 (0)