Skip to content

Commit c9d0572

Browse files
cypressiousliamoberg
authored andcommitted
[FIR] Promote diagnostic for -Xcontext-receivers to error
#KT-72994
1 parent 6c8830d commit c9d0572

File tree

3 files changed

+6
-26
lines changed

3 files changed

+6
-26
lines changed

compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/config/FirContextParametersLanguageVersionSettingsChecker.kt

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,16 @@
66
package org.jetbrains.kotlin.fir.analysis.checkers.config
77

88
import org.jetbrains.kotlin.config.LanguageFeature
9-
import org.jetbrains.kotlin.config.LanguageVersion
10-
import org.jetbrains.kotlin.config.LanguageVersionSettings
119
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
1210
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
1311
import org.jetbrains.kotlin.fir.isEnabled
1412

1513
object FirContextParametersLanguageVersionSettingsChecker : FirLanguageVersionSettingsChecker() {
16-
private val WARNING_STARTING_FROM_2_2: String = """
14+
val DIAGNOSTIC_MESSAGE: String = """
1715
Experimental context receivers are superseded by context parameters.
1816
Replace the '-Xcontext-receivers' compiler argument with '-Xcontext-parameters' and migrate to the new syntax.
1917
20-
See the context parameters proposal for more details: https://kotl.in/context-parameters
21-
This warning will become an error in future releases.""".trimIndent()
22-
23-
private val WARNING_BEFORE_2_2: String = """
24-
Experimental context receivers are deprecated and will be superseded by context parameters.
25-
Kotlin compiler version ${LanguageVersion.KOTLIN_2_2} will be the last version that supports context receivers.
26-
Consider migrating to extension receivers or regular parameters now.
27-
Alternatively, migrate directly to context parameters when Kotlin ${LanguageVersion.KOTLIN_2_2} is released.
28-
29-
See the context parameters proposal for more details: https://kotl.in/context-parameters
30-
This warning will become an error in future releases.""".trimIndent()
31-
32-
fun getMessage(languageVersionSettings: LanguageVersionSettings): String {
33-
return if (languageVersionSettings.languageVersion >= LanguageVersion.KOTLIN_2_2) {
34-
WARNING_STARTING_FROM_2_2
35-
} else {
36-
WARNING_BEFORE_2_2
37-
}
38-
}
18+
See the context parameters proposal for more details: https://kotl.in/context-parameters""".trimIndent()
3919

4020
context(context: CheckerContext)
4121
override fun check(reporter: BaseDiagnosticsCollector.RawReporter) {
@@ -48,8 +28,8 @@ object FirContextParametersLanguageVersionSettingsChecker : FirLanguageVersionSe
4828
"Experimental language features for context receivers and context parameters cannot be enabled at the same time. " +
4929
"Remove the '-Xcontext-receivers' compiler argument."
5030
)
51-
} else if (context.languageVersionSettings.languageVersion >= LanguageVersion.KOTLIN_2_2) {
52-
reporter.reportWarning(WARNING_STARTING_FROM_2_2)
31+
} else {
32+
reporter.reportError(DIAGNOSTIC_MESSAGE)
5333
}
5434
}
5535
}

compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirContextReceiversDeprecatedDeclarationChecker.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ object FirContextReceiversDeprecatedDeclarationChecker : FirBasicDeclarationChec
3636
if (declaration is FirConstructor && declaration !is FirPrimaryConstructor) {
3737
reporter.reportOn(declaration.source, FirErrors.CONTEXT_CLASS_OR_CONSTRUCTOR)
3838
} else {
39-
val message = FirContextParametersLanguageVersionSettingsChecker.getMessage(context.languageVersionSettings)
39+
val message = FirContextParametersLanguageVersionSettingsChecker.DIAGNOSTIC_MESSAGE
4040
reporter.reportOn(declaration.source, FirErrors.CONTEXT_RECEIVERS_DEPRECATED, message)
4141
}
4242
}

compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirContextualFunctionTypeChecker.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ object FirContextualFunctionTypeChecker : FirResolvedTypeRefChecker(MppCheckerKi
5555
FirErrors.SUBTYPING_BETWEEN_CONTEXT_RECEIVERS
5656
)
5757
}
58-
val message = FirContextParametersLanguageVersionSettingsChecker.getMessage(context.languageVersionSettings)
58+
val message = FirContextParametersLanguageVersionSettingsChecker.DIAGNOSTIC_MESSAGE
5959
reporter.reportOn(typeRef.source, FirErrors.CONTEXT_RECEIVERS_DEPRECATED, message)
6060
} else {
6161
source.requireFeatureSupport(LanguageFeature.ContextParameters)

0 commit comments

Comments
 (0)