diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt index 8ed1e66c01d..34b67748d11 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt @@ -50,6 +50,14 @@ private val multiPlatformProjectsArg: String by lazy { CommonCompilerArguments::multiPlatform.annotations.filterIsInstance().single().value } +private val effectSystemArg: String by lazy { + CommonCompilerArguments::effectSystem.annotations.filterIsInstance().single().value +} + +private val readDeserializedContractsArg: String by lazy { + CommonCompilerArguments::readDeserializedContracts.annotations.filterIsInstance().single().value +} + fun Module.getAndCacheLanguageLevelByDependencies(): LanguageVersion { val facetSettings = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this) val languageLevel = getLibraryLanguageLevel(this, null, facetSettings.targetPlatformKind) @@ -173,6 +181,15 @@ private fun getExtraLanguageFeatures( (module != null && module.implementsCommonModule)) { put(LanguageFeature.MultiPlatformProjects, LanguageFeature.State.ENABLED) } + + if (compilerSettings?.additionalArguments?.contains(effectSystemArg) == true) { + put(LanguageFeature.UseReturnsEffect, LanguageFeature.State.ENABLED) + put(LanguageFeature.UseCallsInPlaceEffect, LanguageFeature.State.ENABLED) + } + + if (compilerSettings?.additionalArguments?.contains(readDeserializedContractsArg) == true) { + put(LanguageFeature.ReadDeserializedContracts, LanguageFeature.State.ENABLED) + } } }