From 1e8e38e5acd87aa2aff952f833cfa1b806f387fb Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Tue, 24 Aug 2021 17:13:58 +0000 Subject: [PATCH] FIR checker: improve diagnostics message for SEALED_INHERITOR_IN_DIFFERENT_PACKAGE --- .../checkers/generator/diagnostics/FirDiagnosticsList.kt | 5 +---- .../kotlin/fir/analysis/diagnostics/FirErrors.kt | 2 +- .../checkers/declaration/FirSealedSupertypeChecker.kt | 8 +------- .../fir/analysis/diagnostics/FirDefaultErrorMessages.kt | 9 ++------- .../api/fir/diagnostics/KtFirDataClassConverters.kt | 2 -- .../frontend/api/fir/diagnostics/KtFirDiagnostics.kt | 2 -- .../frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt | 2 -- 7 files changed, 5 insertions(+), 25 deletions(-) diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 5d4633c6563..3a574bc4b57 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -160,10 +160,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val CLASS_IN_SUPERTYPE_FOR_ENUM by error() val SEALED_SUPERTYPE by error() val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error() - val SEALED_INHERITOR_IN_DIFFERENT_PACKAGE by error { - parameter("subclassPackage") - parameter("basePackage") - } + val SEALED_INHERITOR_IN_DIFFERENT_PACKAGE by error() val SEALED_INHERITOR_IN_DIFFERENT_MODULE by error() val CLASS_INHERITS_JAVA_SEALED_CLASS by error() val SUPERTYPE_NOT_A_CLASS_OR_INTERFACE by error { diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 2b3b1879a5f..203b868709c 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -168,7 +168,7 @@ object FirErrors { val CLASS_IN_SUPERTYPE_FOR_ENUM by error0() val SEALED_SUPERTYPE by error0() val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error0() - val SEALED_INHERITOR_IN_DIFFERENT_PACKAGE by error2() + val SEALED_INHERITOR_IN_DIFFERENT_PACKAGE by error0() val SEALED_INHERITOR_IN_DIFFERENT_MODULE by error0() val CLASS_INHERITS_JAVA_SEALED_CLASS by error0() val SUPERTYPE_NOT_A_CLASS_OR_INTERFACE by error1() diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt index d6ae8244f9b..5a7e9872de0 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSealedSupertypeChecker.kt @@ -48,13 +48,7 @@ object FirSealedSupertypeChecker : FirClassChecker() { } val superClassPackage = superClass.classId.packageFqName if (superClassPackage != subclassPackage) { - reporter.reportOn( - superTypeRef.source, - FirErrors.SEALED_INHERITOR_IN_DIFFERENT_PACKAGE, - subclassPackage, - superClassPackage, - context - ) + reporter.reportOn(superTypeRef.source, FirErrors.SEALED_INHERITOR_IN_DIFFERENT_PACKAGE, context) } if (superClass.moduleData != declaration.moduleData) { // TODO: implement logic like in org.jetbrains.kotlin.resolve.checkers.SealedInheritorInSameModuleChecker for MPP support. diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt index d9d6099e818..b0d69f3e733 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt @@ -573,14 +573,9 @@ class FirDefaultErrorMessages { map.put(CLASS_IN_SUPERTYPE_FOR_ENUM, "Enum class cannot inherit from classes") map.put(SEALED_SUPERTYPE, "This type is sealed, so it can be inherited by only its own nested classes or objects") map.put(SEALED_SUPERTYPE_IN_LOCAL_CLASS, "Local class cannot extend a sealed class") - map.put( - SEALED_INHERITOR_IN_DIFFERENT_PACKAGE, - "Inheritor of sealed class or interface declared in package {0} but it must be in package {1} where base class is declared", - TO_STRING, - TO_STRING - ) + map.put(SEALED_INHERITOR_IN_DIFFERENT_PACKAGE, "A class can only inherit from a sealed class or interface declared in the same package") map.put(SEALED_INHERITOR_IN_DIFFERENT_MODULE, "Inheritance of sealed classes or interfaces from different module is prohibited") - map.put(CLASS_INHERITS_JAVA_SEALED_CLASS, "Inheritance of java sealed classes is prohibited") + map.put(CLASS_INHERITS_JAVA_SEALED_CLASS, "Inheritance of Java sealed classes is prohibited") map.put(SUPERTYPE_NOT_A_CLASS_OR_INTERFACE, "Supertype is not a class or interface", TO_STRING) map.put(CYCLIC_INHERITANCE_HIERARCHY, "There's a cycle in the inheritance hierarchy for this type") diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt index dc6843f6118..ea9ff46f08e 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -452,8 +452,6 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert } add(FirErrors.SEALED_INHERITOR_IN_DIFFERENT_PACKAGE) { firDiagnostic -> SealedInheritorInDifferentPackageImpl( - firDiagnostic.a, - firDiagnostic.b, firDiagnostic as FirPsiDiagnostic, token, ) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt index fc632ffa5c9..600ccf177ba 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt @@ -343,8 +343,6 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { abstract class SealedInheritorInDifferentPackage : KtFirDiagnostic() { override val diagnosticClass get() = SealedInheritorInDifferentPackage::class - abstract val subclassPackage: FqName - abstract val basePackage: FqName } abstract class SealedInheritorInDifferentModule : KtFirDiagnostic() { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index a045bcfcab0..34b4d6f70a1 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -523,8 +523,6 @@ internal class SealedSupertypeInLocalClassImpl( } internal class SealedInheritorInDifferentPackageImpl( - override val subclassPackage: FqName, - override val basePackage: FqName, firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.SealedInheritorInDifferentPackage(), KtAbstractFirDiagnostic {