Enable TypeRefinement in COMPOSITE resolution mode
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
@@ -270,4 +276,4 @@ val PsiElement.languageVersionSettings: LanguageVersionSettings
|
|||||||
return LanguageVersionSettingsImpl.DEFAULT
|
return LanguageVersionSettingsImpl.DEFAULT
|
||||||
}
|
}
|
||||||
return IDELanguageSettingsProvider.getLanguageVersionSettings(this.getModuleInfo(), project)
|
return IDELanguageSettingsProvider.getLanguageVersionSettings(this.getModuleInfo(), project)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user