[FIR] Report UNSUPPORTED_FEATURE if jvm records feature is not enabled

This commit is contained in:
Andrey Zinovyev
2021-08-19 12:49:25 +03:00
committed by Space
parent c7008892fd
commit e8405c41d1
2 changed files with 15 additions and 1 deletions
@@ -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
@@ -5,7 +5,7 @@
public record JRecord(int x, CharSequence y) {}
// FILE: main.kt
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
<!UNSUPPORTED_FEATURE!>@JvmRecord<!>
class MyRec(
val x: String,
val y: Int,