[FIR] Add JVM Default diagnostics

This commit is contained in:
Ivan Kochurkin
2021-08-27 23:17:27 +03:00
committed by TeamCityServer
parent b5ff49c903
commit cfd2835254
36 changed files with 432 additions and 270 deletions
@@ -3712,4 +3712,48 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJvmErrors.JVM_DEFAULT_NOT_IN_INTERFACE) { firDiagnostic ->
JvmDefaultNotInInterfaceImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.JVM_DEFAULT_IN_JVM6_TARGET) { firDiagnostic ->
JvmDefaultInJvm6TargetImpl(
firDiagnostic.a,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.JVM_DEFAULT_REQUIRED_FOR_OVERRIDE) { firDiagnostic ->
JvmDefaultRequiredForOverrideImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.JVM_DEFAULT_IN_DECLARATION) { firDiagnostic ->
JvmDefaultInDeclarationImpl(
firDiagnostic.a,
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.JVM_DEFAULT_THROUGH_INHERITANCE) { firDiagnostic ->
JvmDefaultThroughInheritanceImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL) { firDiagnostic ->
UsageOfJvmDefaultThroughSuperCallImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirJvmErrors.NON_JVM_DEFAULT_OVERRIDES_JAVA_DEFAULT) { firDiagnostic ->
NonJvmDefaultOverridesJavaDefaultImpl(
firDiagnostic as FirPsiDiagnostic,
token,
)
}
}
@@ -2582,4 +2582,34 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = IllegalJavaLangRecordSupertype::class
}
abstract class JvmDefaultNotInInterface : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = JvmDefaultNotInInterface::class
}
abstract class JvmDefaultInJvm6Target : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = JvmDefaultInJvm6Target::class
abstract val annotation: String
}
abstract class JvmDefaultRequiredForOverride : KtFirDiagnostic<KtDeclaration>() {
override val diagnosticClass get() = JvmDefaultRequiredForOverride::class
}
abstract class JvmDefaultInDeclaration : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JvmDefaultInDeclaration::class
abstract val annotation: String
}
abstract class JvmDefaultThroughInheritance : KtFirDiagnostic<KtDeclaration>() {
override val diagnosticClass get() = JvmDefaultThroughInheritance::class
}
abstract class UsageOfJvmDefaultThroughSuperCall : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = UsageOfJvmDefaultThroughSuperCall::class
}
abstract class NonJvmDefaultOverridesJavaDefault : KtFirDiagnostic<KtDeclaration>() {
override val diagnosticClass get() = NonJvmDefaultOverridesJavaDefault::class
}
}
@@ -4194,3 +4194,54 @@ internal class IllegalJavaLangRecordSupertypeImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class JvmDefaultNotInInterfaceImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultNotInInterface(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class JvmDefaultInJvm6TargetImpl(
override val annotation: String,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultInJvm6Target(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class JvmDefaultRequiredForOverrideImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultRequiredForOverride(), KtAbstractFirDiagnostic<KtDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class JvmDefaultInDeclarationImpl(
override val annotation: String,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultInDeclaration(), KtAbstractFirDiagnostic<KtElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class JvmDefaultThroughInheritanceImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.JvmDefaultThroughInheritance(), KtAbstractFirDiagnostic<KtDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class UsageOfJvmDefaultThroughSuperCallImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.UsageOfJvmDefaultThroughSuperCall(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class NonJvmDefaultOverridesJavaDefaultImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.NonJvmDefaultOverridesJavaDefault(), KtAbstractFirDiagnostic<KtDeclaration> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}