[FIR] Implement IMPLICIT_NOTHING_*_TYPE diagnostics

This commit is contained in:
Dmitriy Novozhilov
2022-11-09 18:44:57 +02:00
committed by Space Team
parent 0e84bf2053
commit 1b42298025
18 changed files with 104 additions and 23 deletions
@@ -1927,6 +1927,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.IMPLICIT_NOTHING_RETURN_TYPE) { firDiagnostic ->
ImplicitNothingReturnTypeImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.IMPLICIT_NOTHING_PROPERTY_TYPE) { firDiagnostic ->
ImplicitNothingPropertyTypeImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.CYCLIC_GENERIC_UPPER_BOUND) { firDiagnostic ->
CyclicGenericUpperBoundImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -1371,6 +1371,14 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val isMismatchDueToNullability: Boolean
}
abstract class ImplicitNothingReturnType : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ImplicitNothingReturnType::class
}
abstract class ImplicitNothingPropertyType : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ImplicitNothingPropertyType::class
}
abstract class CyclicGenericUpperBound : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = CyclicGenericUpperBound::class
}
@@ -1648,6 +1648,16 @@ internal class ReturnTypeMismatchImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ReturnTypeMismatch(), KtAbstractFirDiagnostic<KtExpression>
internal class ImplicitNothingReturnTypeImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ImplicitNothingReturnType(), KtAbstractFirDiagnostic<PsiElement>
internal class ImplicitNothingPropertyTypeImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ImplicitNothingPropertyType(), KtAbstractFirDiagnostic<PsiElement>
internal class CyclicGenericUpperBoundImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,