From cd3827ca2eba909cc63bf5921bfade2c6fe686bc Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Wed, 8 Dec 2021 14:39:43 -0800 Subject: [PATCH] FIR checker: make FirMemberFunctionsChecker a function checker There is no reason why this checker needs to be a class checker. --- .../checkers/CommonDeclarationCheckers.kt | 2 +- .../declaration/FirMemberFunctionsChecker.kt | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt index c66c6efc5dd..b5a9a298716 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt @@ -55,6 +55,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirOperatorModifierChecker, FirTailrecFunctionChecker, FirTopLevelFunctionsChecker, + FirMemberFunctionsChecker, ) override val propertyCheckers: Set @@ -88,7 +89,6 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirOpenMemberChecker, FirClassVarianceChecker, FirSealedSupertypeChecker, - FirMemberFunctionsChecker, FirMemberPropertiesChecker, FirImplementationMismatchChecker, FirTypeParametersInObjectChecker, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMemberFunctionsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMemberFunctionsChecker.kt index 9e900fe0543..171e893359a 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMemberFunctionsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMemberFunctionsChecker.kt @@ -7,26 +7,24 @@ package org.jetbrains.kotlin.fir.analysis.checkers.declaration import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.checkers.contains import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.getModifierList -import org.jetbrains.kotlin.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors -import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.utils.addToStdlib.lastIsInstanceOrNull // See old FE's [DeclarationsChecker] -object FirMemberFunctionsChecker : FirClassChecker() { - override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) { - for (member in declaration.declarations) { - if (member is FirSimpleFunction) { - checkFunction(declaration, member, context, reporter) - } - } +object FirMemberFunctionsChecker : FirSimpleFunctionChecker() { + override fun check(declaration: FirSimpleFunction, context: CheckerContext, reporter: DiagnosticReporter) { + val containingDeclaration = context.containingDeclarations.lastIsInstanceOrNull() ?: return + checkFunction(containingDeclaration, declaration, context, reporter) } private fun checkFunction(