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,
|
override val description: String,
|
||||||
val compilerArgument: String
|
val compilerArgument: String
|
||||||
) : DescriptionAware {
|
) : DescriptionAware {
|
||||||
ENABLED("Enabled", "enabled"),
|
ENABLED("Enabled", "enable"),
|
||||||
ENABLED_WITH_WARNING("Enabled with warning", "warning"),
|
ENABLED_WITH_WARNING("Enabled with warning", "warn"),
|
||||||
DISABLED("Disabled", "disabled");
|
DISABLED("Disabled", "error");
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val DEFAULT = ENABLED_WITH_WARNING
|
val DEFAULT = ENABLED_WITH_WARNING
|
||||||
@@ -79,6 +79,10 @@ enum class CoroutineSupport(
|
|||||||
arguments.coroutinesError -> DISABLED
|
arguments.coroutinesError -> DISABLED
|
||||||
else -> DEFAULT
|
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.idea.maven.project.*
|
||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
|
import org.jetbrains.kotlin.config.CoroutineSupport
|
||||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||||
import org.jetbrains.kotlin.idea.facet.configureFacet
|
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
|
val compilerVersion = mavenProject.findPlugin(KotlinMavenConfigurator.GROUP_ID, KotlinMavenConfigurator.MAVEN_PLUGIN_ID)?.version
|
||||||
?: return
|
?: return
|
||||||
val kotlinFacet = module.getOrCreateFacet(modifiableModelsProvider)
|
val kotlinFacet = module.getOrCreateFacet(modifiableModelsProvider)
|
||||||
kotlinFacet.configureFacet(compilerVersion, modifiableModelsProvider)
|
kotlinFacet.configureFacet(compilerVersion, CoroutineSupport.DEFAULT, modifiableModelsProvider)
|
||||||
MavenProjectImportHandler.getInstances(module.project).forEach { it(kotlinFacet, mavenProject) }
|
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.service.project.manage.AbstractProjectDataService
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import org.jetbrains.kotlin.config.CoroutineSupport
|
||||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||||
import org.jetbrains.kotlin.idea.facet.configureFacet
|
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.kotlin.idea.inspections.gradle.findKotlinPluginVersion
|
||||||
import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData
|
import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData
|
||||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
interface GradleProjectImportHandler {
|
interface GradleProjectImportHandler {
|
||||||
companion object : ProjectExtensionDescriptor<GradleProjectImportHandler>(
|
companion object : ProjectExtensionDescriptor<GradleProjectImportHandler>(
|
||||||
@@ -58,9 +60,21 @@ class KotlinGradleProjectDataService : AbstractProjectDataService<GradleSourceSe
|
|||||||
val compilerVersion = moduleNode?.findAll(BuildScriptClasspathData.KEY)?.firstOrNull()?.data?.let(::findKotlinPluginVersion)
|
val compilerVersion = moduleNode?.findAll(BuildScriptClasspathData.KEY)?.firstOrNull()?.data?.let(::findKotlinPluginVersion)
|
||||||
?: continue
|
?: continue
|
||||||
|
|
||||||
|
val coroutinesProperty = findKotlinCoroutinesProperty(project)
|
||||||
|
|
||||||
val kotlinFacet = ideModule.getOrCreateFacet(modelsProvider)
|
val kotlinFacet = ideModule.getOrCreateFacet(modelsProvider)
|
||||||
kotlinFacet.configureFacet(compilerVersion, modelsProvider)
|
kotlinFacet.configureFacet(compilerVersion, coroutinesProperty, modelsProvider)
|
||||||
GradleProjectImportHandler.getInstances(project).forEach { it(kotlinFacet, sourceSetNode) }
|
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.externalSystem.service.project.IdeModifiableModelsProvider
|
||||||
import com.intellij.openapi.module.Module
|
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.LibraryOrderEntry
|
||||||
import com.intellij.openapi.roots.ModuleRootManager
|
import com.intellij.openapi.roots.ModuleRootManager
|
||||||
import com.intellij.openapi.roots.ModuleRootModel
|
import com.intellij.openapi.roots.ModuleRootModel
|
||||||
import com.intellij.openapi.roots.OrderRootType
|
import com.intellij.openapi.roots.OrderRootType
|
||||||
import com.intellij.util.text.VersionComparatorUtil
|
import com.intellij.util.text.VersionComparatorUtil
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.copyBean
|
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.KotlinFacetSettings
|
||||||
import org.jetbrains.kotlin.config.LanguageVersion
|
import org.jetbrains.kotlin.config.LanguageVersion
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformKind
|
import org.jetbrains.kotlin.config.TargetPlatformKind
|
||||||
@@ -146,7 +144,7 @@ fun Module.getOrCreateFacet(modelsProvider: IdeModifiableModelsProvider): Kotlin
|
|||||||
return facet
|
return facet
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KotlinFacet.configureFacet(compilerVersion: String, modelsProvider: IdeModifiableModelsProvider) {
|
fun KotlinFacet.configureFacet(compilerVersion: String, coroutineSupport: CoroutineSupport, modelsProvider: IdeModifiableModelsProvider) {
|
||||||
val module = module
|
val module = module
|
||||||
with(configuration.settings) {
|
with(configuration.settings) {
|
||||||
versionInfo.targetPlatformKind = null
|
versionInfo.targetPlatformKind = null
|
||||||
@@ -159,5 +157,6 @@ fun KotlinFacet.configureFacet(compilerVersion: String, modelsProvider: IdeModif
|
|||||||
apiLevel = languageLevel
|
apiLevel = languageLevel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
compilerInfo.coroutineSupport = coroutineSupport
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user