[FIR] Allow lateinit FirBackingField's

This commit is contained in:
Nikolay Lunyak
2021-09-08 11:47:45 +03:00
committed by TeamCityServer
parent 871aebd423
commit 6b532ccd0d
11 changed files with 119 additions and 39 deletions
@@ -2418,6 +2418,24 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.LATEINIT_PROPERTY_FIELD_DECLARATION_WITH_INITIALIZER) { firDiagnostic ->
LateinitPropertyFieldDeclarationWithInitializerImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.LATEINIT_FIELD_IN_VAL_PROPERTY) { firDiagnostic ->
LateinitFieldInValPropertyImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.LATEINIT_NULLABLE_BACKING_FIELD) { firDiagnostic ->
LateinitNullableBackingFieldImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.PROPERTY_MUST_HAVE_GETTER) { firDiagnostic ->
PropertyMustHaveGetterImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -1711,6 +1711,18 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = PropertyFieldDeclarationMissingInitializer::class
}
abstract class LateinitPropertyFieldDeclarationWithInitializer : KtFirDiagnostic<KtBackingField>() {
override val diagnosticClass get() = LateinitPropertyFieldDeclarationWithInitializer::class
}
abstract class LateinitFieldInValProperty : KtFirDiagnostic<KtBackingField>() {
override val diagnosticClass get() = LateinitFieldInValProperty::class
}
abstract class LateinitNullableBackingField : KtFirDiagnostic<KtBackingField>() {
override val diagnosticClass get() = LateinitNullableBackingField::class
}
abstract class PropertyMustHaveGetter : KtFirDiagnostic<KtProperty>() {
override val diagnosticClass get() = PropertyMustHaveGetter::class
}
@@ -2753,6 +2753,27 @@ internal class PropertyFieldDeclarationMissingInitializerImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class LateinitPropertyFieldDeclarationWithInitializerImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.LateinitPropertyFieldDeclarationWithInitializer(), KtAbstractFirDiagnostic<KtBackingField> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class LateinitFieldInValPropertyImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.LateinitFieldInValProperty(), KtAbstractFirDiagnostic<KtBackingField> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class LateinitNullableBackingFieldImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.LateinitNullableBackingField(), KtAbstractFirDiagnostic<KtBackingField> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class PropertyMustHaveGetterImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
@@ -2767,43 +2788,6 @@ internal class PropertyMustHaveSetterImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class AbstractPropertyInPrimaryConstructorParametersImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.AbstractPropertyInPrimaryConstructorParameters(), KtAbstractFirDiagnostic<KtModifierListOwner> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class LocalVariableWithTypeParametersWarningImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.LocalVariableWithTypeParametersWarning(), KtAbstractFirDiagnostic<KtProperty> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class LocalVariableWithTypeParametersImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.LocalVariableWithTypeParameters(), KtAbstractFirDiagnostic<KtProperty> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class InapplicableBackingFieldVisibilityImpl(
override val modifier: KtModifierKeywordToken,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.InapplicableBackingFieldVisibility(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class InapplicableBackingFieldModifierImpl(
override val modifier: KtModifierKeywordToken,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.InapplicableBackingFieldModifier(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExplicitBackingFieldInInterfaceImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
@@ -2839,6 +2823,20 @@ internal class AbstractPropertyInPrimaryConstructorParametersImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class LocalVariableWithTypeParametersWarningImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.LocalVariableWithTypeParametersWarning(), KtAbstractFirDiagnostic<KtProperty> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class LocalVariableWithTypeParametersImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.LocalVariableWithTypeParameters(), KtAbstractFirDiagnostic<KtProperty> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ExpectedDeclarationWithBodyImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,