[FIR] Report inherited java members referencing FunctionN

^KT-60000 Fixed
This commit is contained in:
Nikolay Lunyak
2023-08-07 14:38:22 +03:00
committed by Space Team
parent 0c35e97a8d
commit 70e98c9c2b
12 changed files with 96 additions and 23 deletions
@@ -657,6 +657,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.UNSUPPORTED_INHERITANCE_FROM_JAVA_MEMBER_REFERENCING_KOTLIN_FUNCTION) { firDiagnostic ->
UnsupportedInheritanceFromJavaMemberReferencingKotlinFunctionImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.CYCLIC_INHERITANCE_HIERARCHY) { firDiagnostic ->
CyclicInheritanceHierarchyImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -502,6 +502,11 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val reason: String
}
interface UnsupportedInheritanceFromJavaMemberReferencingKotlinFunction : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = UnsupportedInheritanceFromJavaMemberReferencingKotlinFunction::class
val symbol: KtSymbol
}
interface CyclicInheritanceHierarchy : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = CyclicInheritanceHierarchy::class
}
@@ -590,6 +590,12 @@ internal class SupertypeNotAClassOrInterfaceImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.SupertypeNotAClassOrInterface
internal class UnsupportedInheritanceFromJavaMemberReferencingKotlinFunctionImpl(
override val symbol: KtSymbol,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.UnsupportedInheritanceFromJavaMemberReferencingKotlinFunction
internal class CyclicInheritanceHierarchyImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,