Import kotlin.coroutines property from gradle to facet
This commit is contained in:
committed by
Stanislav Erokhin
parent
f19581dc4d
commit
2ff04f2bc5
@@ -65,9 +65,9 @@ enum class CoroutineSupport(
|
||||
override val description: String,
|
||||
val compilerArgument: String
|
||||
) : DescriptionAware {
|
||||
ENABLED("Enabled", "enabled"),
|
||||
ENABLED_WITH_WARNING("Enabled with warning", "warning"),
|
||||
DISABLED("Disabled", "disabled");
|
||||
ENABLED("Enabled", "enable"),
|
||||
ENABLED_WITH_WARNING("Enabled with warning", "warn"),
|
||||
DISABLED("Disabled", "error");
|
||||
|
||||
companion object {
|
||||
val DEFAULT = ENABLED_WITH_WARNING
|
||||
@@ -79,6 +79,10 @@ enum class CoroutineSupport(
|
||||
arguments.coroutinesError -> DISABLED
|
||||
else -> DEFAULT
|
||||
}
|
||||
|
||||
fun byCompilerArgument(argument: String): CoroutineSupport {
|
||||
return CoroutineSupport.values().find { it.compilerArgument == argument } ?: DEFAULT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.jetbrains.idea.maven.model.MavenPlugin
|
||||
import org.jetbrains.idea.maven.project.*
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||
import org.jetbrains.kotlin.config.CoroutineSupport
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||
import org.jetbrains.kotlin.idea.facet.configureFacet
|
||||
@@ -104,7 +105,7 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
|
||||
val compilerVersion = mavenProject.findPlugin(KotlinMavenConfigurator.GROUP_ID, KotlinMavenConfigurator.MAVEN_PLUGIN_ID)?.version
|
||||
?: return
|
||||
val kotlinFacet = module.getOrCreateFacet(modifiableModelsProvider)
|
||||
kotlinFacet.configureFacet(compilerVersion, modifiableModelsProvider)
|
||||
kotlinFacet.configureFacet(compilerVersion, CoroutineSupport.DEFAULT, modifiableModelsProvider)
|
||||
MavenProjectImportHandler.getInstances(module.project).forEach { it(kotlinFacet, mavenProject) }
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsPr
|
||||
import com.intellij.openapi.externalSystem.service.project.manage.AbstractProjectDataService
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.config.CoroutineSupport
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||
import org.jetbrains.kotlin.idea.facet.configureFacet
|
||||
@@ -31,6 +32,7 @@ import org.jetbrains.kotlin.idea.inspections.gradle.findAll
|
||||
import org.jetbrains.kotlin.idea.inspections.gradle.findKotlinPluginVersion
|
||||
import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData
|
||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||
import java.util.*
|
||||
|
||||
interface GradleProjectImportHandler {
|
||||
companion object : ProjectExtensionDescriptor<GradleProjectImportHandler>(
|
||||
@@ -58,9 +60,21 @@ class KotlinGradleProjectDataService : AbstractProjectDataService<GradleSourceSe
|
||||
val compilerVersion = moduleNode?.findAll(BuildScriptClasspathData.KEY)?.firstOrNull()?.data?.let(::findKotlinPluginVersion)
|
||||
?: continue
|
||||
|
||||
val coroutinesProperty = findKotlinCoroutinesProperty(project)
|
||||
|
||||
val kotlinFacet = ideModule.getOrCreateFacet(modelsProvider)
|
||||
kotlinFacet.configureFacet(compilerVersion, modelsProvider)
|
||||
kotlinFacet.configureFacet(compilerVersion, coroutinesProperty, modelsProvider)
|
||||
GradleProjectImportHandler.getInstances(project).forEach { it(kotlinFacet, sourceSetNode) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun findKotlinCoroutinesProperty(project: Project): CoroutineSupport {
|
||||
val localPropertiesFile = project.baseDir.findChild("local.properties") ?: return CoroutineSupport.DEFAULT
|
||||
|
||||
val properties = Properties()
|
||||
properties.load(localPropertiesFile.inputStream)
|
||||
val coroutinesProperty = properties.getProperty("kotlin.coroutines") ?: return CoroutineSupport.DEFAULT
|
||||
|
||||
return CoroutineSupport.byCompilerArgument(coroutinesProperty)
|
||||
}
|
||||
@@ -18,15 +18,13 @@ package org.jetbrains.kotlin.idea.facet
|
||||
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.projectRoots.JavaSdk
|
||||
import com.intellij.openapi.projectRoots.JavaSdkVersion
|
||||
import com.intellij.openapi.roots.LibraryOrderEntry
|
||||
import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.ModuleRootModel
|
||||
import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.util.text.VersionComparatorUtil
|
||||
import org.jetbrains.kotlin.cli.common.arguments.copyBean
|
||||
import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.config.CoroutineSupport
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettings
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.config.TargetPlatformKind
|
||||
@@ -146,7 +144,7 @@ fun Module.getOrCreateFacet(modelsProvider: IdeModifiableModelsProvider): Kotlin
|
||||
return facet
|
||||
}
|
||||
|
||||
fun KotlinFacet.configureFacet(compilerVersion: String, modelsProvider: IdeModifiableModelsProvider) {
|
||||
fun KotlinFacet.configureFacet(compilerVersion: String, coroutineSupport: CoroutineSupport, modelsProvider: IdeModifiableModelsProvider) {
|
||||
val module = module
|
||||
with(configuration.settings) {
|
||||
versionInfo.targetPlatformKind = null
|
||||
@@ -159,5 +157,6 @@ fun KotlinFacet.configureFacet(compilerVersion: String, modelsProvider: IdeModif
|
||||
apiLevel = languageLevel
|
||||
}
|
||||
}
|
||||
compilerInfo.coroutineSupport = coroutineSupport
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user