From f8349da6087a7356a3fe05bcdc6dc2041230ab19 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 17 Jan 2017 18:49:15 +0300 Subject: [PATCH] Kotlin Facet: Import compiler arguments from Maven project model --- .../kotlin/idea/maven/KotlinMavenImporter.kt | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) 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 ac1e05d487d..d91daae1716 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.config.JvmTarget import org.jetbrains.kotlin.config.LanguageVersion import org.jetbrains.kotlin.config.TargetPlatformKind import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor -import org.jetbrains.kotlin.idea.facet.KotlinFacet -import org.jetbrains.kotlin.idea.facet.configureFacet -import org.jetbrains.kotlin.idea.facet.getOrCreateFacet -import org.jetbrains.kotlin.idea.facet.mavenLibraryId +import org.jetbrains.kotlin.idea.facet.* import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator import java.io.File import java.util.* @@ -105,6 +102,15 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_ configureFacet(mavenProject, modifiableModelsProvider, module) } + private fun getCompilerArgumentsByConfigurationElement(configuration: Element) = + configuration.getChild("args")?.getChildren("arg")?.map { it.text } ?: emptyList() + + private val compilationGoals = listOf(PomFile.KotlinGoals.Compile, + PomFile.KotlinGoals.TestCompile, + PomFile.KotlinGoals.Js, + PomFile.KotlinGoals.TestJs, + PomFile.KotlinGoals.MetaData) + private fun configureFacet(mavenProject: MavenProject, modifiableModelsProvider: IdeModifiableModelsProvider, module: Module) { val mavenPlugin = mavenProject.findPlugin(KotlinMavenConfigurator.GROUP_ID, KotlinMavenConfigurator.MAVEN_PLUGIN_ID) val compilerVersion = mavenPlugin?.version ?: return @@ -113,7 +119,16 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_ kotlinFacet.configureFacet(compilerVersion, CoroutineSupport.DEFAULT, platform, modifiableModelsProvider) val apiVersion = mavenPlugin.configurationElement?.getChild("apiVersion")?.text?.let { LanguageVersion.fromFullVersionString(it) } - kotlinFacet.configuration.settings.versionInfo.apiLevel = apiVersion + val sharedArguments = mavenPlugin.configurationElement?.let { getCompilerArgumentsByConfigurationElement(it) } ?: emptyList() + val executionArguments = mavenPlugin.executions?.filter { it.goals.any { it in compilationGoals } } + ?.firstOrNull() + ?.configurationElement?.let { getCompilerArgumentsByConfigurationElement(it) } + ?: emptyList() + with(kotlinFacet.configuration.settings) { + versionInfo.apiLevel = apiVersion + } + parseCompilerArgumentsToFacet(sharedArguments, kotlinFacet) + parseCompilerArgumentsToFacet(executionArguments, kotlinFacet) MavenProjectImportHandler.getInstances(module.project).forEach { it(kotlinFacet, mavenProject) } }