diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt index 7168f951a3e..88bf828900c 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -848,6 +848,24 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } + add(FirErrors.BACKING_FIELD_IN_INTERFACE) { firDiagnostic -> + BackingFieldInInterfaceImpl( + firDiagnostic as FirPsiDiagnostic<*>, + token, + ) + } + add(FirErrors.EXTENSION_PROPERTY_WITH_BACKING_FIELD) { firDiagnostic -> + ExtensionPropertyWithBackingFieldImpl( + firDiagnostic as FirPsiDiagnostic<*>, + token, + ) + } + add(FirErrors.PROPERTY_INITIALIZER_NO_BACKING_FIELD) { firDiagnostic -> + PropertyInitializerNoBackingFieldImpl( + firDiagnostic as FirPsiDiagnostic<*>, + token, + ) + } add(FirErrors.ABSTRACT_DELEGATED_PROPERTY) { firDiagnostic -> AbstractDelegatedPropertyImpl( firDiagnostic as FirPsiDiagnostic<*>, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt index c14587e956d..bbadc0bd85f 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt @@ -602,6 +602,18 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { override val diagnosticClass get() = PropertyWithNoTypeNoInitializer::class } + abstract class BackingFieldInInterface : KtFirDiagnostic() { + override val diagnosticClass get() = BackingFieldInInterface::class + } + + abstract class ExtensionPropertyWithBackingField : KtFirDiagnostic() { + override val diagnosticClass get() = ExtensionPropertyWithBackingField::class + } + + abstract class PropertyInitializerNoBackingField : KtFirDiagnostic() { + override val diagnosticClass get() = PropertyInitializerNoBackingField::class + } + abstract class AbstractDelegatedProperty : KtFirDiagnostic() { override val diagnosticClass get() = AbstractDelegatedProperty::class } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 7f4c57fb3fa..fe6670f3489 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -966,6 +966,27 @@ internal class PropertyWithNoTypeNoInitializerImpl( override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) } +internal class BackingFieldInInterfaceImpl( + firDiagnostic: FirPsiDiagnostic<*>, + override val token: ValidityToken, +) : KtFirDiagnostic.BackingFieldInInterface(), KtAbstractFirDiagnostic { + override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) +} + +internal class ExtensionPropertyWithBackingFieldImpl( + firDiagnostic: FirPsiDiagnostic<*>, + override val token: ValidityToken, +) : KtFirDiagnostic.ExtensionPropertyWithBackingField(), KtAbstractFirDiagnostic { + override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) +} + +internal class PropertyInitializerNoBackingFieldImpl( + firDiagnostic: FirPsiDiagnostic<*>, + override val token: ValidityToken, +) : KtFirDiagnostic.PropertyInitializerNoBackingField(), KtAbstractFirDiagnostic { + override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) +} + internal class AbstractDelegatedPropertyImpl( firDiagnostic: FirPsiDiagnostic<*>, override val token: ValidityToken,