diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/JavaTypeEnhancementStateParser.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/JavaTypeEnhancementStateParser.kt index fb355d14acd..4e036e16a23 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/JavaTypeEnhancementStateParser.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/JavaTypeEnhancementStateParser.kt @@ -29,8 +29,6 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) { jspecifyState: String?, nullabilityAnnotations: Array?, ): JavaTypeEnhancementState { - val jsr305State = parseJsr305State(jsr305Args) - val compatqualCheckerFrameworkAnnotationsReportLevel = when (supportCompatqualCheckerFrameworkAnnotations) { "enable" -> ReportLevel.STRICT "disable" -> ReportLevel.IGNORE @@ -43,10 +41,9 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) { getDefaultReportLevelForAnnotation(CHECKER_FRAMEWORK_COMPATQUAL_ANNOTATIONS_PACKAGE) } } - + val jsr305Settings = parseJsr305State(jsr305Args) val jspecifyReportLevel = parseJspecifyReportLevel(jspecifyState) val nullabilityAnnotationReportLevels = parseNullabilityAnnotationReportLevels(nullabilityAnnotations) - val jsr305Settings = Jsr305Settings(jsr305State.global ?: ReportLevel.WARN, jsr305State.migration, jsr305State.usedDefined) return JavaTypeEnhancementState(jsr305Settings) { when { @@ -99,17 +96,12 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) { return reportLevel } - private data class Jsr305State( - val global: ReportLevel?, - val migration: ReportLevel?, - val usedDefined: Map - ) - - private fun parseJsr305State(args: Array?): Jsr305State { + private fun parseJsr305State(args: Array?): Jsr305Settings { var global: ReportLevel? = null var migration: ReportLevel? = null val userDefined = mutableMapOf() val compilerOption = "-Xjsr305" + val defaultSettings = Jsr305Settings.DEFAULT fun parseJsr305UnderMigration(item: String): ReportLevel? { val rawState = item.split(":").takeIf { it.size == 2 }?.get(1) @@ -156,7 +148,14 @@ class JavaTypeEnhancementStateParser(private val collector: MessageCollector) { } } } - return Jsr305State(global, migration, userDefined) + + val globalLevel = global ?: defaultSettings.globalLevel + + return Jsr305Settings( + globalLevel = globalLevel, + migrationLevel = migration ?: getDefaultMigrationJsr305ReportLevelForGivenGlobal(globalLevel), + userDefinedLevelForSpecificAnnotation = defaultSettings.userDefinedLevelForSpecificAnnotation + ) } private fun reportUnrecognizedReportLevel(item: String, sourceCompilerOption: String) { diff --git a/core/util.runtime/src/org/jetbrains/kotlin/load/java/JavaNullabilityAnnotationSettings.kt b/core/util.runtime/src/org/jetbrains/kotlin/load/java/JavaNullabilityAnnotationSettings.kt index 5001431ec4d..eb0012175b0 100644 --- a/core/util.runtime/src/org/jetbrains/kotlin/load/java/JavaNullabilityAnnotationSettings.kt +++ b/core/util.runtime/src/org/jetbrains/kotlin/load/java/JavaNullabilityAnnotationSettings.kt @@ -55,10 +55,13 @@ fun getDefaultJsr305Settings(): Jsr305Settings { } else { jsr305Settings.reportLevelBefore } - val migrationLevel = if (globalReportLevel == ReportLevel.WARN) null else globalReportLevel + val migrationLevel = getDefaultMigrationJsr305ReportLevelForGivenGlobal(globalReportLevel) return Jsr305Settings(globalReportLevel, migrationLevel) } +fun getDefaultMigrationJsr305ReportLevelForGivenGlobal(globalReportLevel: ReportLevel) = + if (globalReportLevel == ReportLevel.WARN) null else globalReportLevel + fun getDefaultReportLevelForAnnotation(annotationFqName: FqName) = getReportLevelForAnnotation(annotationFqName, emptyMap()) fun getReportLevelForAnnotation(annotation: FqName, configuredReportLevels: Map): ReportLevel {