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 3d69381d6b1..10f600e9e3d 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 @@ -40,17 +40,12 @@ import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgu import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings import org.jetbrains.kotlin.idea.facet.getLibraryLanguageLevel import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider -import org.jetbrains.kotlin.platform.IdePlatformKind -import org.jetbrains.kotlin.platform.idePlatformKind -import org.jetbrains.kotlin.platform.isCommon +import org.jetbrains.kotlin.platform.* +import org.jetbrains.kotlin.platform.impl.isCommon +import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.UserDataProperty -import org.jetbrains.kotlin.config.JvmTarget -import org.jetbrains.kotlin.platform.TargetPlatform -import org.jetbrains.kotlin.platform.impl.isCommon -import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.utils.Jsr305State import java.io.File @@ -151,6 +146,7 @@ fun Project.getLanguageVersionSettings( val extraAnalysisFlags = additionalArguments.configureAnalysisFlags(MessageCollector.NONE).apply { if (jsr305State != null) put(JvmAnalysisFlags.jsr305, jsr305State) + initIDESpecificAnalysisSettings(this@getLanguageVersionSettings) } return LanguageVersionSettingsImpl( @@ -200,7 +196,11 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings { configureNewInferenceSupportInIDE(project) }.orEmpty() - val analysisFlags = facetSettings.mergedCompilerArguments?.configureAnalysisFlags(MessageCollector.NONE).orEmpty() + val analysisFlags = facetSettings + .mergedCompilerArguments + ?.configureAnalysisFlags(MessageCollector.NONE) + ?.apply { initIDESpecificAnalysisSettings(project) } + .orEmpty() return LanguageVersionSettingsImpl( languageVersion, @@ -210,6 +210,12 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings { ) } +private fun MutableMap, Any>.initIDESpecificAnalysisSettings(project: Project) { + if (KotlinMultiplatformAnalysisModeComponent.getMode(project) == KotlinMultiplatformAnalysisModeComponent.Mode.COMPOSITE) { + put(AnalysisFlags.useTypeRefinement, true) + } +} + val Module.platform: TargetPlatform? get() = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this).targetPlatform ?: project.platform @@ -270,4 +276,4 @@ val PsiElement.languageVersionSettings: LanguageVersionSettings return LanguageVersionSettingsImpl.DEFAULT } return IDELanguageSettingsProvider.getLanguageVersionSettings(this.getModuleInfo(), project) - } \ No newline at end of file + }