[FIR] Forbid explicit backing fields in extension properties

This commit is contained in:
Nikolay Lunyak
2021-08-23 12:46:44 +03:00
committed by TeamCityServer
parent d5ddd3cee3
commit 2aafe84eef
8 changed files with 32 additions and 5 deletions
@@ -2442,6 +2442,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.EXPLICIT_BACKING_FIELD_IN_EXTENSION) { firDiagnostic ->
ExplicitBackingFieldInExtensionImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.ABSTRACT_PROPERTY_IN_PRIMARY_CONSTRUCTOR_PARAMETERS) { firDiagnostic ->
AbstractPropertyInPrimaryConstructorParametersImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -1727,6 +1727,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ExplicitBackingFieldInAbstractProperty::class
}
abstract class ExplicitBackingFieldInExtension : KtFirDiagnostic<KtBackingField>() {
override val diagnosticClass get() = ExplicitBackingFieldInExtension::class
}
abstract class AbstractPropertyInPrimaryConstructorParameters : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = AbstractPropertyInPrimaryConstructorParameters::class
}
@@ -2818,6 +2818,13 @@ internal class ExplicitBackingFieldInAbstractPropertyImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExplicitBackingFieldInExtensionImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ExplicitBackingFieldInExtension(), KtAbstractFirDiagnostic<KtBackingField> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class AbstractPropertyInPrimaryConstructorParametersImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,