[FIR] Report errors on cycles in annotation parameter types

^KT-47932
This commit is contained in:
Dmitriy Novozhilov
2022-01-12 14:34:10 +03:00
committed by teamcity
parent e9ac24dc33
commit 9f870b0549
12 changed files with 109 additions and 32 deletions
@@ -737,6 +737,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.CYCLE_IN_ANNOTATION_PARAMETER.errorFactory) { firDiagnostic ->
CycleInAnnotationParameterErrorImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.CYCLE_IN_ANNOTATION_PARAMETER.warningFactory) { firDiagnostic ->
CycleInAnnotationParameterWarningImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.ANNOTATION_CLASS_CONSTRUCTOR_CALL) { firDiagnostic ->
AnnotationClassConstructorCallImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -538,6 +538,14 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = NonConstValUsedInConstantExpression::class
}
abstract class CycleInAnnotationParameterError : KtFirDiagnostic<KtParameter>() {
override val diagnosticClass get() = CycleInAnnotationParameterError::class
}
abstract class CycleInAnnotationParameterWarning : KtFirDiagnostic<KtParameter>() {
override val diagnosticClass get() = CycleInAnnotationParameterWarning::class
}
abstract class AnnotationClassConstructorCall : KtFirDiagnostic<KtCallExpression>() {
override val diagnosticClass get() = AnnotationClassConstructorCall::class
}
@@ -641,6 +641,16 @@ internal class NonConstValUsedInConstantExpressionImpl(
override val token: ValidityToken,
) : KtFirDiagnostic.NonConstValUsedInConstantExpression(), KtAbstractFirDiagnostic<KtExpression>
internal class CycleInAnnotationParameterErrorImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.CycleInAnnotationParameterError(), KtAbstractFirDiagnostic<KtParameter>
internal class CycleInAnnotationParameterWarningImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.CycleInAnnotationParameterWarning(), KtAbstractFirDiagnostic<KtParameter>
internal class AnnotationClassConstructorCallImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,