[FIR] Make FirNotImplementedOverrideChecker to run only for non-expect classes or in metadata compilation
^KT-64187 Fixed Review: https://jetbrains.team/p/kt/reviews/14807 I also checked that IDE sets metadataCompilation to `true` (Actually, it looks like IDE performs analysis two times with the flag having different values, but whatever, maybe it's even better this way)
This commit is contained in:
+1
-2
@@ -100,8 +100,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
|
||||
get() = setOf(
|
||||
FirOverrideChecker.Regular,
|
||||
FirOverrideChecker.ForExpectClass,
|
||||
FirNotImplementedOverrideChecker.Regular,
|
||||
FirNotImplementedOverrideChecker.ForExpectClass,
|
||||
FirNotImplementedOverrideChecker,
|
||||
FirNotImplementedOverrideSimpleEnumEntryChecker.Regular,
|
||||
FirNotImplementedOverrideSimpleEnumEntryChecker.ForExpectClass,
|
||||
FirThrowableSubclassChecker,
|
||||
|
||||
+3
-15
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.analysis.checkers.declaration
|
||||
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
@@ -41,22 +42,9 @@ import org.jetbrains.kotlin.util.ImplementationStatus
|
||||
import kotlin.contracts.ExperimentalContracts
|
||||
import kotlin.contracts.contract
|
||||
|
||||
sealed class FirNotImplementedOverrideChecker(mppKind: MppCheckerKind) : FirClassChecker(mppKind) {
|
||||
object Regular : FirNotImplementedOverrideChecker(MppCheckerKind.Platform) {
|
||||
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration.isExpect) return
|
||||
super.check(declaration, context, reporter)
|
||||
}
|
||||
}
|
||||
|
||||
object ForExpectClass : FirNotImplementedOverrideChecker(MppCheckerKind.Common) {
|
||||
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (!declaration.isExpect) return
|
||||
super.check(declaration, context, reporter)
|
||||
}
|
||||
}
|
||||
|
||||
object FirNotImplementedOverrideChecker : FirClassChecker(MppCheckerKind.Platform) {
|
||||
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (declaration.isExpect && !context.languageVersionSettings.getFlag(AnalysisFlags.metadataCompilation)) return
|
||||
val source = declaration.source ?: return
|
||||
val sourceKind = source.kind
|
||||
if (sourceKind is KtFakeSourceElementKind && sourceKind != KtFakeSourceElementKind.EnumInitializer) return
|
||||
|
||||
Reference in New Issue
Block a user