[FE] Drop coroutinesState from build configurations plugins

This commit is contained in:
Dmitriy Novozhilov
2020-12-02 13:19:37 +03:00
committed by TeamCityServer
parent 7f4a925b85
commit df3b12e13b
17 changed files with 6 additions and 348 deletions
@@ -45,8 +45,6 @@ interface GradleBuildScriptManipulator<out Psi : PsiFile> {
fun configureProjectBuildScript(kotlinPluginName: String, version: String): Boolean
fun changeCoroutineConfiguration(coroutineOption: String): PsiElement?
fun changeLanguageFeatureConfiguration(feature: LanguageFeature, state: LanguageFeature.State, forTests: Boolean): PsiElement?
fun changeLanguageVersion(version: String, forTests: Boolean): PsiElement?
@@ -125,4 +123,4 @@ fun GradleVersion.scope(directive: String): String {
}
return directive
}
}
@@ -139,18 +139,6 @@ class GroovyBuildScriptManipulator(
return oldText != scriptFile.text
}
override fun changeCoroutineConfiguration(coroutineOption: String): PsiElement? {
val snippet = "coroutines \"$coroutineOption\""
val kotlinBlock = scriptFile.getKotlinBlock()
kotlinBlock.getBlockOrCreate("experimental").apply {
addOrReplaceExpression(snippet) { stmt ->
(stmt as? GrMethodCall)?.invokedExpression?.text == "coroutines"
}
}
return kotlinBlock.parent
}
override fun changeLanguageFeatureConfiguration(
feature: LanguageFeature,
state: LanguageFeature.State,
@@ -501,4 +489,4 @@ class GroovyBuildScriptManipulator(
return true
}
}
}
}
@@ -100,9 +100,6 @@ class KotlinBuildScriptManipulator(
return originalText != scriptFile.text
}
override fun changeCoroutineConfiguration(coroutineOption: String): PsiElement? =
scriptFile.changeCoroutineConfiguration(coroutineOption)
override fun changeLanguageFeatureConfiguration(
feature: LanguageFeature,
state: LanguageFeature.State,
@@ -273,14 +273,9 @@ fun configureFacetByGradleModule(
// TODO there should be a way to figure out the correct platform version
val platform = platformKind?.defaultPlatform
val coroutinesProperty = CoroutineSupport.byCompilerArgument(
moduleNode.coroutines ?: findKotlinCoroutinesProperty(ideModule.project)
)
val kotlinFacet = ideModule.getOrCreateFacet(modelsProvider, false, GradleConstants.SYSTEM_ID.id)
kotlinFacet.configureFacet(
compilerVersion,
coroutinesProperty,
platform,
modelsProvider
)
@@ -338,8 +333,3 @@ internal fun adjustClasspath(kotlinFacet: KotlinFacet, dependencyClasspath: List
val newClasspath = fullClasspath - dependencyClasspath
arguments.classpath = if (newClasspath.isNotEmpty()) newClasspath.joinToString(File.pathSeparator) else null
}
internal fun findKotlinCoroutinesProperty(project: Project): String {
return GradlePropertiesFileFacade.forProject(project).readProperty("kotlin.coroutines")
?: CoroutineSupport.getCompilerArgument(LanguageFeature.Coroutines.defaultState)
}
@@ -18,14 +18,12 @@ import com.intellij.openapi.roots.DependencyScope
import com.intellij.openapi.roots.ExportableOrderEntry
import com.intellij.openapi.roots.ModifiableRootModel
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.config.CoroutineSupport
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.KotlinModuleKind
import org.jetbrains.kotlin.gradle.KotlinCompilation
import org.jetbrains.kotlin.gradle.KotlinModule
import org.jetbrains.kotlin.gradle.KotlinPlatform
import org.jetbrains.kotlin.gradle.KotlinSourceSet
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService.Companion.isRelevantFor
import org.jetbrains.kotlin.idea.facet.*
import org.jetbrains.kotlin.idea.inspections.gradle.findAll
import org.jetbrains.kotlin.idea.inspections.gradle.findKotlinPluginVersion
@@ -184,9 +182,6 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
val platform = TargetPlatform(platformKinds)
val coroutinesProperty = CoroutineSupport.byCompilerArgument(
mainModuleNode.coroutines ?: findKotlinCoroutinesProperty(ideModule.project)
)
val compilerArguments = kotlinSourceSet.compilerArguments
// Used ID is the same as used in org/jetbrains/kotlin/idea/configuration/KotlinGradleSourceSetDataService.kt:280
// because this DataService was separated from KotlinGradleSourceSetDataService for MPP projects only
@@ -194,7 +189,6 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
val kotlinFacet = ideModule.getOrCreateFacet(modelsProvider, false, id)
kotlinFacet.configureFacet(
compilerVersion,
coroutinesProperty,
platform,
modelsProvider,
mainModuleNode.isHmpp,
@@ -28,13 +28,12 @@ import com.intellij.util.PathUtil
import org.gradle.util.GradleVersion
import org.jetbrains.annotations.NonNls
import org.jetbrains.kotlin.config.ApiVersion
import org.jetbrains.kotlin.config.CoroutineSupport
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion
import org.jetbrains.kotlin.idea.facet.toApiVersion
import org.jetbrains.kotlin.idea.framework.ui.ConfigureDialogWithModulesAndVersion
import org.jetbrains.kotlin.idea.quickfix.ChangeCoroutineSupportFix
import org.jetbrains.kotlin.idea.quickfix.AbstractChangeFeatureSupportLevelFix
import org.jetbrains.kotlin.idea.util.application.executeCommand
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.idea.util.application.runReadAction
@@ -244,25 +243,6 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
}
}
override fun changeCoroutineConfiguration(module: Module, state: LanguageFeature.State) {
val runtimeUpdateRequired = state != LanguageFeature.State.DISABLED &&
getRuntimeLibraryVersion(module).toApiVersion() == ApiVersion.KOTLIN_1_0
if (runtimeUpdateRequired) {
Messages.showErrorDialog(
module.project,
KotlinIdeaGradleBundle.message("error.text.coroutines.support.requires.version.1.1.or.later.of.the.kotlin.runtime.library"),
ChangeCoroutineSupportFix.getFixText(state)
)
return
}
val element = changeCoroutineConfiguration(module, CoroutineSupport.getCompilerArgument(state))
if (element != null) {
OpenFileDescriptor(module.project, element.containingFile.virtualFile, element.textRange.startOffset).navigate(true)
}
}
override fun changeGeneralFeatureConfiguration(
module: Module,
feature: LanguageFeature,
@@ -275,7 +255,7 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
Messages.showErrorDialog(
module.project,
KotlinIdeaGradleBundle.message("error.text.support.requires.version", feature.presentableName, sinceVersion),
ChangeCoroutineSupportFix.getFixText(state)
AbstractChangeFeatureSupportLevelFix.getFixText(state, feature.presentableName)
)
return
}
@@ -345,10 +325,6 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
}
}
fun changeCoroutineConfiguration(module: Module, coroutineOption: String): PsiElement? = changeBuildGradle(module) {
getManipulator(it).changeCoroutineConfiguration(coroutineOption)
}
fun changeFeatureConfiguration(
module: Module,
feature: LanguageFeature,
@@ -398,59 +398,6 @@ class GradleConfiguratorTest : GradleImportingTestCase() {
}
}
@Test
fun testAddCoroutinesSupport() {
val files = importProjectFromTestData()
runInEdtAndWait {
myTestFixture.project.executeWriteCommand("") {
KotlinWithGradleConfigurator.changeCoroutineConfiguration(myTestFixture.module, "enable")
}
checkFiles(files)
}
}
@Test
fun testAddCoroutinesSupportGSK() {
val files = importProjectFromTestData()
runInEdtAndWait {
myTestFixture.project.executeWriteCommand("") {
KotlinWithGradleConfigurator.changeCoroutineConfiguration(myTestFixture.module, "enable")
}
checkFiles(files)
}
}
@Test
fun testChangeCoroutinesSupport() {
val files = importProjectFromTestData()
runInEdtAndWait {
myTestFixture.project.executeWriteCommand("") {
KotlinWithGradleConfigurator.changeCoroutineConfiguration(myTestFixture.module, "enable")
}
checkFiles(files)
}
}
@TargetVersions("4.4+")
@Test
fun testChangeCoroutinesSupportGSK49() {
val files = importProjectFromTestData()
runInEdtAndWait {
myTestFixture.project.executeWriteCommand("") {
KotlinWithGradleConfigurator.changeCoroutineConfiguration(myTestFixture.module, "enable")
}
checkFiles(files)
}
}
@Test
fun testAddLanguageVersion() {
val files = importProjectFromTestData()