[FIR] Implement PACKAGE_OR_CLASSIFIER_REDECLARATION

Fix REDECLARATION positioning
This commit is contained in:
Ivan Kochurkin
2021-07-23 23:49:43 +03:00
committed by Space
parent 1c678be0d3
commit fd92b851a2
60 changed files with 166 additions and 262 deletions
@@ -1929,6 +1929,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.PACKAGE_OR_CLASSIFIER_REDECLARATION) { firDiagnostic ->
PackageOrClassifierRedeclarationImpl(
firDiagnostic.a.map { firBasedSymbol ->
firSymbolBuilder.buildSymbol(firBasedSymbol.fir)
},
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE) { firDiagnostic ->
MethodOfAnyImplementedInInterfaceImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -1369,11 +1369,16 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val conflictingOverloads: List<KtSymbol>
}
abstract class Redeclaration : KtFirDiagnostic<PsiElement>() {
abstract class Redeclaration : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = Redeclaration::class
abstract val conflictingDeclarations: List<KtSymbol>
}
abstract class PackageOrClassifierRedeclaration : KtFirDiagnostic<KtNamedDeclaration>() {
override val diagnosticClass get() = PackageOrClassifierRedeclaration::class
abstract val conflictingDeclarations: List<KtSymbol>
}
abstract class MethodOfAnyImplementedInInterface : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = MethodOfAnyImplementedInInterface::class
}
@@ -2187,7 +2187,15 @@ internal class RedeclarationImpl(
override val conflictingDeclarations: List<KtSymbol>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.Redeclaration(), KtAbstractFirDiagnostic<PsiElement> {
) : KtFirDiagnostic.Redeclaration(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class PackageOrClassifierRedeclarationImpl(
override val conflictingDeclarations: List<KtSymbol>,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.PackageOrClassifierRedeclaration(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}