FIR: add checker for local extension properties

^KT-56013 Fixed
This commit is contained in:
Kirill Rakhman
2023-01-24 16:34:59 +01:00
committed by Space Team
parent 9873fe84f2
commit c1420794b4
16 changed files with 80 additions and 2 deletions
@@ -3043,6 +3043,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.LOCAL_EXTENSION_PROPERTY) { firDiagnostic ->
LocalExtensionPropertyImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_DECLARATION_WITH_BODY) { firDiagnostic ->
ExpectedDeclarationWithBodyImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -2145,6 +2145,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val declaration: KtSymbol
}
abstract class LocalExtensionProperty : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = LocalExtensionProperty::class
}
abstract class ExpectedDeclarationWithBody : KtFirDiagnostic<KtDeclaration>() {
override val diagnosticClass get() = ExpectedDeclarationWithBody::class
}
@@ -2586,6 +2586,11 @@ internal class LateinitIntrinsicCallOnNonAccessiblePropertyImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.LateinitIntrinsicCallOnNonAccessibleProperty(), KtAbstractFirDiagnostic<PsiElement>
internal class LocalExtensionPropertyImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.LocalExtensionProperty(), KtAbstractFirDiagnostic<PsiElement>
internal class ExpectedDeclarationWithBodyImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
@@ -24840,6 +24840,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/properties/lateinitOnTopLevel.kt");
}
@Test
@TestMetadata("localPropertyExtensions.kt")
public void testLocalPropertyExtensions() throws Exception {
runTest("compiler/testData/diagnostics/tests/properties/localPropertyExtensions.kt");
}
@Test
@TestMetadata("protectedGetterWithPublicSetter.kt")
public void testProtectedGetterWithPublicSetter() throws Exception {