Enable TypeRefinement in COMPOSITE resolution mode

This commit is contained in:
Dmitry Savvinov
2019-07-25 19:30:49 +03:00
parent 2b4d70fcf0
commit aaf76a0e46
@@ -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.compiler.configuration.KotlinCompilerSettings
import org.jetbrains.kotlin.idea.facet.getLibraryLanguageLevel import org.jetbrains.kotlin.idea.facet.getLibraryLanguageLevel
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider import org.jetbrains.kotlin.platform.*
import org.jetbrains.kotlin.platform.IdePlatformKind import org.jetbrains.kotlin.platform.impl.isCommon
import org.jetbrains.kotlin.platform.idePlatformKind import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.UserDataProperty 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 org.jetbrains.kotlin.utils.Jsr305State
import java.io.File import java.io.File
@@ -151,6 +146,7 @@ fun Project.getLanguageVersionSettings(
val extraAnalysisFlags = additionalArguments.configureAnalysisFlags(MessageCollector.NONE).apply { val extraAnalysisFlags = additionalArguments.configureAnalysisFlags(MessageCollector.NONE).apply {
if (jsr305State != null) put(JvmAnalysisFlags.jsr305, jsr305State) if (jsr305State != null) put(JvmAnalysisFlags.jsr305, jsr305State)
initIDESpecificAnalysisSettings(this@getLanguageVersionSettings)
} }
return LanguageVersionSettingsImpl( return LanguageVersionSettingsImpl(
@@ -200,7 +196,11 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings {
configureNewInferenceSupportInIDE(project) configureNewInferenceSupportInIDE(project)
}.orEmpty() }.orEmpty()
val analysisFlags = facetSettings.mergedCompilerArguments?.configureAnalysisFlags(MessageCollector.NONE).orEmpty() val analysisFlags = facetSettings
.mergedCompilerArguments
?.configureAnalysisFlags(MessageCollector.NONE)
?.apply { initIDESpecificAnalysisSettings(project) }
.orEmpty()
return LanguageVersionSettingsImpl( return LanguageVersionSettingsImpl(
languageVersion, languageVersion,
@@ -210,6 +210,12 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings {
) )
} }
private fun MutableMap<AnalysisFlag<*>, Any>.initIDESpecificAnalysisSettings(project: Project) {
if (KotlinMultiplatformAnalysisModeComponent.getMode(project) == KotlinMultiplatformAnalysisModeComponent.Mode.COMPOSITE) {
put(AnalysisFlags.useTypeRefinement, true)
}
}
val Module.platform: TargetPlatform? val Module.platform: TargetPlatform?
get() = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this).targetPlatform ?: project.platform get() = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this).targetPlatform ?: project.platform