[FIR JS] Implement FirJsInheritanceChecker

This commit is contained in:
Nikolay Lunyak
2023-01-04 15:37:15 +02:00
committed by Space Team
parent 9e1c6f2f61
commit 4cf8d9ffb9
17 changed files with 235 additions and 29 deletions
@@ -4648,6 +4648,25 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJsErrors.IMPLEMENTING_FUNCTION_INTERFACE) { firDiagnostic ->
ImplementingFunctionInterfaceImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.OVERRIDING_EXTERNAL_FUN_WITH_OPTIONAL_PARAMS) { firDiagnostic ->
OverridingExternalFunWithOptionalParamsImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.OVERRIDING_EXTERNAL_FUN_WITH_OPTIONAL_PARAMS_WITH_FAKE) { firDiagnostic ->
OverridingExternalFunWithOptionalParamsWithFakeImpl(
firSymbolBuilder.functionLikeBuilder.buildFunctionSymbol(firDiagnostic.a),
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.DELEGATION_BY_DYNAMIC) { firDiagnostic ->
DelegationByDynamicImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -3233,6 +3233,19 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = JavaSamInterfaceConstructorReference::class
}
abstract class ImplementingFunctionInterface : KtFirDiagnostic<KtClassOrObject>() {
override val diagnosticClass get() = ImplementingFunctionInterface::class
}
abstract class OverridingExternalFunWithOptionalParams : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = OverridingExternalFunWithOptionalParams::class
}
abstract class OverridingExternalFunWithOptionalParamsWithFake : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = OverridingExternalFunWithOptionalParamsWithFake::class
abstract val function: KtFunctionLikeSymbol
}
abstract class DelegationByDynamic : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = DelegationByDynamic::class
}
@@ -3911,6 +3911,22 @@ internal class JavaSamInterfaceConstructorReferenceImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.JavaSamInterfaceConstructorReference(), KtAbstractFirDiagnostic<PsiElement>
internal class ImplementingFunctionInterfaceImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ImplementingFunctionInterface(), KtAbstractFirDiagnostic<KtClassOrObject>
internal class OverridingExternalFunWithOptionalParamsImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.OverridingExternalFunWithOptionalParams(), KtAbstractFirDiagnostic<KtElement>
internal class OverridingExternalFunWithOptionalParamsWithFakeImpl(
override val function: KtFunctionLikeSymbol,
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.OverridingExternalFunWithOptionalParamsWithFake(), KtAbstractFirDiagnostic<KtElement>
internal class DelegationByDynamicImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,