[Klib] Run prerelease checker in all backends

The checker also checks the metadata version, which
would be handled separately. Now it would never
emmit this error for klib-based backends.

^KT-61773
^KT-61596
^KT-55809
This commit is contained in:
Pavel Kunyavskiy
2023-09-12 11:17:53 +02:00
committed by Space Team
parent 9f9287fb2e
commit 9a9598c16b
19 changed files with 129 additions and 89 deletions
@@ -4837,6 +4837,21 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.INCOMPATIBLE_CLASS) { firDiagnostic ->
IncompatibleClassImpl(
firDiagnostic.a,
firDiagnostic.b,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.PRE_RELEASE_CLASS) { firDiagnostic ->
PreReleaseClassImpl(
firDiagnostic.a,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJvmErrors.CONFLICTING_JVM_DECLARATIONS) { firDiagnostic ->
ConflictingJvmDeclarationsImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -5319,21 +5334,6 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJvmErrors.INCOMPATIBLE_CLASS) { firDiagnostic ->
IncompatibleClassImpl(
firDiagnostic.a,
firDiagnostic.b,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJvmErrors.PRE_RELEASE_CLASS) { firDiagnostic ->
PreReleaseClassImpl(
firDiagnostic.a,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.IMPLEMENTING_FUNCTION_INTERFACE) { firDiagnostic ->
ImplementingFunctionInterfaceImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -3373,6 +3373,17 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = DeprecatedDeclarationOfEnumEntry::class
}
interface IncompatibleClass : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = IncompatibleClass::class
val presentableString: String
val incompatibility: IncompatibleVersionErrorData<*>
}
interface PreReleaseClass : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = PreReleaseClass::class
val presentableString: String
}
interface ConflictingJvmDeclarations : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = ConflictingJvmDeclarations::class
}
@@ -3705,17 +3716,6 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = NoReflectionInClassPath::class
}
interface IncompatibleClass : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = IncompatibleClass::class
val presentableString: String
val incompatibility: IncompatibleVersionErrorData<*>
}
interface PreReleaseClass : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = PreReleaseClass::class
val presentableString: String
}
interface ImplementingFunctionInterface : KtFirDiagnostic<KtClassOrObject> {
override val diagnosticClass get() = ImplementingFunctionInterface::class
}
@@ -4070,6 +4070,19 @@ internal class DeprecatedDeclarationOfEnumEntryImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtEnumEntry>(firDiagnostic, token), KtFirDiagnostic.DeprecatedDeclarationOfEnumEntry
internal class IncompatibleClassImpl(
override val presentableString: String,
override val incompatibility: IncompatibleVersionErrorData<*>,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.IncompatibleClass
internal class PreReleaseClassImpl(
override val presentableString: String,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.PreReleaseClass
internal class ConflictingJvmDeclarationsImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
@@ -4477,19 +4490,6 @@ internal class NoReflectionInClassPathImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.NoReflectionInClassPath
internal class IncompatibleClassImpl(
override val presentableString: String,
override val incompatibility: IncompatibleVersionErrorData<*>,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.IncompatibleClass
internal class PreReleaseClassImpl(
override val presentableString: String,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.PreReleaseClass
internal class ImplementingFunctionInterfaceImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,