FIR: support JVM_DEFAULT_WITH_COMPATIBILITY_* diagnostics (FE 1.0 sync)

This commit is contained in:
Mikhail Glukhikh
2021-12-08 17:44:08 +03:00
committed by TeamCityServer
parent 178290eac3
commit 533e802c8d
14 changed files with 108 additions and 53 deletions
@@ -4110,6 +4110,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJvmErrors.JVM_DEFAULT_WITH_COMPATIBILITY_IN_DECLARATION) { firDiagnostic ->
JvmDefaultWithCompatibilityInDeclarationImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJvmErrors.JVM_DEFAULT_WITH_COMPATIBILITY_NOT_ON_INTERFACE) { firDiagnostic ->
JvmDefaultWithCompatibilityNotOnInterfaceImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJvmErrors.USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL) { firDiagnostic ->
UsageOfJvmDefaultThroughSuperCallImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -2859,6 +2859,14 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val annotation: String
}
abstract class JvmDefaultWithCompatibilityInDeclaration : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JvmDefaultWithCompatibilityInDeclaration::class
}
abstract class JvmDefaultWithCompatibilityNotOnInterface : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JvmDefaultWithCompatibilityNotOnInterface::class
}
abstract class UsageOfJvmDefaultThroughSuperCall : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = UsageOfJvmDefaultThroughSuperCall::class
}
@@ -3456,6 +3456,16 @@ internal class JvmDefaultInDeclarationImpl(
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultInDeclaration(), KtAbstractFirDiagnostic<KtElement>
internal class JvmDefaultWithCompatibilityInDeclarationImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultWithCompatibilityInDeclaration(), KtAbstractFirDiagnostic<KtElement>
internal class JvmDefaultWithCompatibilityNotOnInterfaceImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultWithCompatibilityNotOnInterface(), KtAbstractFirDiagnostic<KtElement>
internal class UsageOfJvmDefaultThroughSuperCallImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: ValidityToken,