diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt index 08f180a24a7..4dd1eb16d9a 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt @@ -5,14 +5,17 @@ package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirRegularClassChecker import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName import org.jetbrains.kotlin.fir.declarations.utils.* +import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.name.FqName object FirJvmRecordChecker : FirRegularClassChecker() { @@ -22,6 +25,17 @@ object FirJvmRecordChecker : FirRegularClassChecker() { override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) { val annotationSource = declaration.getAnnotationByFqName(JVM_RECORD_ANNOTATION_FQ_NAME)?.source ?: return + val languageVersionSettings = context.session.languageVersionSettings + if (!languageVersionSettings.supportsFeature(LanguageFeature.JvmRecordSupport)) { + reporter.reportOn( + annotationSource, + FirErrors.UNSUPPORTED_FEATURE, + LanguageFeature.JvmRecordSupport to languageVersionSettings, + context + ) + return + } + if (declaration.isLocal) { reporter.reportOn(annotationSource, FirJvmErrors.LOCAL_JVM_RECORD, context) return diff --git a/compiler/testData/diagnostics/tests/testsWithJava15/jvmRecord/disabledFeature.fir.kt b/compiler/testData/diagnostics/tests/testsWithJava15/jvmRecord/disabledFeature.fir.kt index 92c5964ead8..5d4eeb5458f 100644 --- a/compiler/testData/diagnostics/tests/testsWithJava15/jvmRecord/disabledFeature.fir.kt +++ b/compiler/testData/diagnostics/tests/testsWithJava15/jvmRecord/disabledFeature.fir.kt @@ -5,7 +5,7 @@ public record JRecord(int x, CharSequence y) {} // FILE: main.kt -@JvmRecord +@JvmRecord class MyRec( val x: String, val y: Int,