[FIR] Implement SPREAD_OF_NULLABLE

This commit is contained in:
Ivan Kochurkin
2021-07-11 23:49:58 +03:00
committed by TeamCityServer
parent 83c5c41dd4
commit 66e052b9b3
15 changed files with 99 additions and 25 deletions
@@ -1243,6 +1243,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.SPREAD_OF_NULLABLE) { firDiagnostic ->
SpreadOfNullableImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.OVERLOAD_RESOLUTION_AMBIGUITY) { firDiagnostic ->
OverloadResolutionAmbiguityImpl(
firDiagnostic.a.map { firBasedSymbol ->
@@ -888,6 +888,10 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val name: String
}
abstract class SpreadOfNullable : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = SpreadOfNullable::class
}
abstract class OverloadResolutionAmbiguity : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = OverloadResolutionAmbiguity::class
abstract val candidates: List<KtSymbol>
@@ -1426,6 +1426,13 @@ internal class NewInferenceNoInformationForParameterImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class SpreadOfNullableImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.SpreadOfNullable(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class OverloadResolutionAmbiguityImpl(
override val candidates: List<KtSymbol>,
firDiagnostic: FirPsiDiagnostic,