[FIR] Implement RESOLUTION_TO_CLASSIFIER

This commit is contained in:
Ivan Kochurkin
2021-06-30 18:33:20 +03:00
parent 2574dc907c
commit d4e1cded59
51 changed files with 88 additions and 483 deletions
@@ -335,6 +335,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.RESOLUTION_TO_CLASSIFIER) { firDiagnostic ->
ResolutionToClassifierImpl(
firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a.fir),
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.SUPER_IS_NOT_AN_EXPRESSION) { firDiagnostic ->
SuperIsNotAnExpressionImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -263,6 +263,11 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val type: KtType
}
abstract class ResolutionToClassifier : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ResolutionToClassifier::class
abstract val classSymbol: KtClassLikeSymbol
}
abstract class SuperIsNotAnExpression : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = SuperIsNotAnExpression::class
}
@@ -390,6 +390,14 @@ internal class FunctionExpectedImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ResolutionToClassifierImpl(
override val classSymbol: KtClassLikeSymbol,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.ResolutionToClassifier(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class SuperIsNotAnExpressionImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,