[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
|
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.context.CheckerContext
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirRegularClassChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirRegularClassChecker
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
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.jvm.FirJvmErrors
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName
|
import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||||
|
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
object FirJvmRecordChecker : FirRegularClassChecker() {
|
object FirJvmRecordChecker : FirRegularClassChecker() {
|
||||||
@@ -22,6 +25,17 @@ object FirJvmRecordChecker : FirRegularClassChecker() {
|
|||||||
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
val annotationSource = declaration.getAnnotationByFqName(JVM_RECORD_ANNOTATION_FQ_NAME)?.source ?: return
|
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) {
|
if (declaration.isLocal) {
|
||||||
reporter.reportOn(annotationSource, FirJvmErrors.LOCAL_JVM_RECORD, context)
|
reporter.reportOn(annotationSource, FirJvmErrors.LOCAL_JVM_RECORD, context)
|
||||||
return
|
return
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
public record JRecord(int x, CharSequence y) {}
|
public record JRecord(int x, CharSequence y) {}
|
||||||
// FILE: main.kt
|
// FILE: main.kt
|
||||||
|
|
||||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
<!UNSUPPORTED_FEATURE!>@JvmRecord<!>
|
||||||
class MyRec(
|
class MyRec(
|
||||||
val x: String,
|
val x: String,
|
||||||
val y: Int,
|
val y: Int,
|
||||||
|
|||||||
Reference in New Issue
Block a user