Rename AnalysisFlags.useExperimental to optIn

This commit is contained in:
Mikhail Glukhikh
2021-09-03 17:49:36 +03:00
committed by TeamCityServer
parent aedcec7715
commit 007cf2ce7c
10 changed files with 13 additions and 13 deletions
@@ -405,7 +405,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
// WARNING, "'-Xopt-in' is deprecated and will be removed in a future release, please use -opt-in instead" // WARNING, "'-Xopt-in' is deprecated and will be removed in a future release, please use -opt-in instead"
// ) // )
} }
put(AnalysisFlags.useExperimental, useExperimentalFqNames + optInDeprecatedFqNames + optIn?.toList().orEmpty()) put(AnalysisFlags.optIn, useExperimentalFqNames + optInDeprecatedFqNames + optIn?.toList().orEmpty())
put(AnalysisFlags.expectActualLinker, expectActualLinker) put(AnalysisFlags.expectActualLinker, expectActualLinker)
put(AnalysisFlags.explicitApiVersion, apiVersion != null) put(AnalysisFlags.explicitApiVersion, apiVersion != null)
put(AnalysisFlags.allowResultReturnType, allowResultReturnType) put(AnalysisFlags.allowResultReturnType, allowResultReturnType)
@@ -19,7 +19,7 @@ object AnalysisFlags {
val expectActualLinker by AnalysisFlag.Delegates.Boolean val expectActualLinker by AnalysisFlag.Delegates.Boolean
@JvmStatic @JvmStatic
val useExperimental by AnalysisFlag.Delegates.ListOfStrings val optIn by AnalysisFlag.Delegates.ListOfStrings
@JvmStatic @JvmStatic
val explicitApiVersion by AnalysisFlag.Delegates.Boolean val explicitApiVersion by AnalysisFlag.Delegates.Boolean
@@ -57,7 +57,7 @@ object FirOptInAnnotationCallChecker : FirAnnotationCallChecker() {
reporter: DiagnosticReporter reporter: DiagnosticReporter
) { ) {
val languageVersionSettings = context.session.languageVersionSettings val languageVersionSettings = context.session.languageVersionSettings
val useExperimentalFqNames = languageVersionSettings.getFlag(AnalysisFlags.useExperimental) val useExperimentalFqNames = languageVersionSettings.getFlag(AnalysisFlags.optIn)
if (!languageVersionSettings.supportsFeature(LanguageFeature.OptInRelease) && if (!languageVersionSettings.supportsFeature(LanguageFeature.OptInRelease) &&
OptInNames.REQUIRES_OPT_IN_FQ_NAME.asString() !in useExperimentalFqNames OptInNames.REQUIRES_OPT_IN_FQ_NAME.asString() !in useExperimentalFqNames
) { ) {
@@ -209,7 +209,7 @@ object FirOptInUsageBaseChecker {
): Boolean { ): Boolean {
val languageVersionSettings = context.session.languageVersionSettings val languageVersionSettings = context.session.languageVersionSettings
val fqNameAsString = annotationClassId.asFqNameString() val fqNameAsString = annotationClassId.asFqNameString()
if (fqNameAsString in languageVersionSettings.getFlag(AnalysisFlags.useExperimental)) { if (fqNameAsString in languageVersionSettings.getFlag(AnalysisFlags.optIn)) {
return true return true
} }
for (annotationContainer in context.annotationContainers) { for (annotationContainer in context.annotationContainers) {
@@ -284,7 +284,7 @@ class ExperimentalUsageChecker(project: Project) : CallChecker {
languageVersionSettings: LanguageVersionSettings, languageVersionSettings: LanguageVersionSettings,
bindingContext: BindingContext bindingContext: BindingContext
): Boolean = ): Boolean =
annotationFqName.asString() in languageVersionSettings.getFlag(AnalysisFlags.useExperimental) || annotationFqName.asString() in languageVersionSettings.getFlag(AnalysisFlags.optIn) ||
anyParentMatches { element -> anyParentMatches { element ->
element.isDeclarationAnnotatedWith(annotationFqName, bindingContext) || element.isDeclarationAnnotatedWith(annotationFqName, bindingContext) ||
element.isElementAnnotatedWithUseExperimentalOf(annotationFqName, bindingContext) element.isElementAnnotatedWithUseExperimentalOf(annotationFqName, bindingContext)
@@ -358,7 +358,7 @@ class ExperimentalUsageChecker(project: Project) : CallChecker {
return true return true
} }
languageVersionSettings.getFlag(AnalysisFlags.useExperimental).forEach { fqName -> languageVersionSettings.getFlag(AnalysisFlags.optIn).forEach { fqName ->
if (fqName != REQUIRES_OPT_IN_FQ_NAME.asString() && fqName != OLD_EXPERIMENTAL_FQ_NAME.asString()) { if (fqName != REQUIRES_OPT_IN_FQ_NAME.asString() && fqName != OLD_EXPERIMENTAL_FQ_NAME.asString()) {
checkAnnotation(fqName) checkAnnotation(fqName)
} }
@@ -411,7 +411,7 @@ class ExperimentalUsageChecker(project: Project) : CallChecker {
} }
private fun checkUsageOfKotlinExperimentalOrUseExperimental(element: PsiElement, context: CheckerContext) { private fun checkUsageOfKotlinExperimentalOrUseExperimental(element: PsiElement, context: CheckerContext) {
val useExperimentalFqNames = context.languageVersionSettings.getFlag(AnalysisFlags.useExperimental) val useExperimentalFqNames = context.languageVersionSettings.getFlag(AnalysisFlags.optIn)
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.OptInRelease) && if (!context.languageVersionSettings.supportsFeature(LanguageFeature.OptInRelease) &&
REQUIRES_OPT_IN_FQ_NAME.asString() !in useExperimentalFqNames && REQUIRES_OPT_IN_FQ_NAME.asString() !in useExperimentalFqNames &&
OLD_EXPERIMENTAL_FQ_NAME.asString() !in useExperimentalFqNames OLD_EXPERIMENTAL_FQ_NAME.asString() !in useExperimentalFqNames
@@ -63,7 +63,7 @@ class LanguageVersionSettingsBuilder {
} }
val analysisFlags = listOfNotNull( val analysisFlags = listOfNotNull(
analysisFlag(AnalysisFlags.useExperimental, directives[LanguageSettingsDirectives.OPT_IN].takeIf { it.isNotEmpty() }), analysisFlag(AnalysisFlags.optIn, directives[LanguageSettingsDirectives.OPT_IN].takeIf { it.isNotEmpty() }),
analysisFlag(AnalysisFlags.ignoreDataFlowInAssert, trueOrNull(LanguageSettingsDirectives.IGNORE_DATA_FLOW_IN_ASSERT in directives)), analysisFlag(AnalysisFlags.ignoreDataFlowInAssert, trueOrNull(LanguageSettingsDirectives.IGNORE_DATA_FLOW_IN_ASSERT in directives)),
analysisFlag(AnalysisFlags.constraintSystemForOverloadResolution, directives.singleOrZeroValue(LanguageSettingsDirectives.CONSTRAINT_SYSTEM_FOR_OVERLOAD_RESOLUTION)), analysisFlag(AnalysisFlags.constraintSystemForOverloadResolution, directives.singleOrZeroValue(LanguageSettingsDirectives.CONSTRAINT_SYSTEM_FOR_OVERLOAD_RESOLUTION)),
analysisFlag(AnalysisFlags.allowResultReturnType, trueOrNull(LanguageSettingsDirectives.ALLOW_RESULT_RETURN_TYPE in directives)), analysisFlag(AnalysisFlags.allowResultReturnType, trueOrNull(LanguageSettingsDirectives.ALLOW_RESULT_RETURN_TYPE in directives)),
@@ -28,7 +28,7 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() {
// --------------------- Analysis Flags --------------------- // --------------------- Analysis Flags ---------------------
val OPT_IN by stringDirective( val OPT_IN by stringDirective(
description = "List of opted in annotations (AnalysisFlags.useExperimental)" description = "List of opted in annotations (AnalysisFlags.optIn)"
) )
val IGNORE_DATA_FLOW_IN_ASSERT by directive( val IGNORE_DATA_FLOW_IN_ASSERT by directive(
@@ -59,7 +59,7 @@ fun parseLanguageVersionSettings(directives: Directives): CompilerTestLanguageVe
val languageFeaturesString = directives[LANGUAGE_DIRECTIVE] val languageFeaturesString = directives[LANGUAGE_DIRECTIVE]
val analysisFlags = listOfNotNull( val analysisFlags = listOfNotNull(
analysisFlag(AnalysisFlags.useExperimental, directives[OPT_IN_DIRECTIVE]?.split(' ')), analysisFlag(AnalysisFlags.optIn, directives[OPT_IN_DIRECTIVE]?.split(' ')),
analysisFlag(JvmAnalysisFlags.jvmDefaultMode, directives[JVM_DEFAULT_MODE]?.let { JvmDefaultMode.fromStringOrNull(it) }), analysisFlag(JvmAnalysisFlags.jvmDefaultMode, directives[JVM_DEFAULT_MODE]?.let { JvmDefaultMode.fromStringOrNull(it) }),
analysisFlag(AnalysisFlags.ignoreDataFlowInAssert, if (IGNORE_DATA_FLOW_IN_ASSERT_DIRECTIVE in directives) true else null), analysisFlag(AnalysisFlags.ignoreDataFlowInAssert, if (IGNORE_DATA_FLOW_IN_ASSERT_DIRECTIVE in directives) true else null),
analysisFlag(AnalysisFlags.skipMetadataVersionCheck, if (SKIP_METADATA_VERSION_CHECK in directives) true else null), analysisFlag(AnalysisFlags.skipMetadataVersionCheck, if (SKIP_METADATA_VERSION_CHECK in directives) true else null),
@@ -88,7 +88,7 @@ class GenerateIrRuntime {
LanguageFeature.MultiPlatformProjects to LanguageFeature.State.ENABLED LanguageFeature.MultiPlatformProjects to LanguageFeature.State.ENABLED
), ),
analysisFlags = mapOf( analysisFlags = mapOf(
AnalysisFlags.useExperimental to listOf( AnalysisFlags.optIn to listOf(
"kotlin.contracts.ExperimentalContracts", "kotlin.contracts.ExperimentalContracts",
"kotlin.Experimental", "kotlin.Experimental",
"kotlin.ExperimentalMultiplatform" "kotlin.ExperimentalMultiplatform"
@@ -353,8 +353,8 @@ class K2NativeCompilerArguments : CommonCompilerArguments() {
override fun configureAnalysisFlags(collector: MessageCollector, languageVersion: LanguageVersion): MutableMap<AnalysisFlag<*>, Any> = override fun configureAnalysisFlags(collector: MessageCollector, languageVersion: LanguageVersion): MutableMap<AnalysisFlag<*>, Any> =
super.configureAnalysisFlags(collector, languageVersion).also { super.configureAnalysisFlags(collector, languageVersion).also {
val useExperimental = it[AnalysisFlags.useExperimental] as List<*> val optInList = it[AnalysisFlags.optIn] as List<*>
it[AnalysisFlags.useExperimental] = useExperimental + listOf("kotlin.ExperimentalUnsignedTypes") it[AnalysisFlags.optIn] = optInList + listOf("kotlin.ExperimentalUnsignedTypes")
if (printIr) if (printIr)
phasesToDumpAfter = arrayOf("ALL") phasesToDumpAfter = arrayOf("ALL")
} }