[FIR] Report UNSUPPORTED_FEATURE if jvm records feature is not enabled
This commit is contained in:
+14
@@ -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
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user