[FIR] Implement checker for missing dependency supertypes

#KT-60778 Fixed
This commit is contained in:
Brian Norman
2023-09-11 09:44:55 -05:00
committed by Space Team
parent a72eafc92b
commit 365ce2a6a5
33 changed files with 403 additions and 76 deletions
@@ -423,6 +423,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.MISSING_DEPENDENCY_SUPERCLASS) { firDiagnostic ->
MissingDependencySuperclassImpl(
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.b),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS) { firDiagnostic ->
CreatingAnInstanceOfAbstractClassImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -343,6 +343,12 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val type: KtType
}
interface MissingDependencySuperclass : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = MissingDependencySuperclass::class
val missingType: KtType
val declarationType: KtType
}
interface CreatingAnInstanceOfAbstractClass : KtFirDiagnostic<KtExpression> {
override val diagnosticClass get() = CreatingAnInstanceOfAbstractClass::class
}
@@ -395,6 +395,13 @@ internal class MissingDependencyClassImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.MissingDependencyClass
internal class MissingDependencySuperclassImpl(
override val missingType: KtType,
override val declarationType: KtType,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.MissingDependencySuperclass
internal class CreatingAnInstanceOfAbstractClassImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,