[FIR] Report list of conflicting symbols in REDECLARATION and CONFLICTING_OVERLOADS

This commit is contained in:
Dmitriy Novozhilov
2021-02-12 11:00:41 +03:00
committed by TeamCityServer
parent 7a4625b70b
commit d696a488b5
8 changed files with 26 additions and 20 deletions
@@ -731,14 +731,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
}
add(FirErrors.CONFLICTING_OVERLOADS) { firDiagnostic ->
ConflictingOverloadsImpl(
firDiagnostic.a,
firDiagnostic.a.map { abstractFirBasedSymbol ->
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
},
firDiagnostic as FirPsiDiagnostic<*>,
token,
)
}
add(FirErrors.REDECLARATION) { firDiagnostic ->
RedeclarationImpl(
firDiagnostic.a,
firDiagnostic.a.map { abstractFirBasedSymbol ->
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
},
firDiagnostic as FirPsiDiagnostic<*>,
token,
)
@@ -521,12 +521,12 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract class ConflictingOverloads : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ConflictingOverloads::class
abstract val conflictingOverloads: String
abstract val conflictingOverloads: List<KtSymbol>
}
abstract class Redeclaration : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = Redeclaration::class
abstract val conflictingDeclaration: String
abstract val conflictingDeclarations: List<KtSymbol>
}
abstract class AnyMethodImplementedInInterface : KtFirDiagnostic<PsiElement>() {
@@ -830,7 +830,7 @@ internal class ManyCompanionObjectsImpl(
}
internal class ConflictingOverloadsImpl(
override val conflictingOverloads: String,
override val conflictingOverloads: List<KtSymbol>,
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.ConflictingOverloads(), KtAbstractFirDiagnostic<PsiElement> {
@@ -838,7 +838,7 @@ internal class ConflictingOverloadsImpl(
}
internal class RedeclarationImpl(
override val conflictingDeclaration: String,
override val conflictingDeclarations: List<KtSymbol>,
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.Redeclaration(), KtAbstractFirDiagnostic<PsiElement> {