From d3ba821371995f8429c0c94fde6bfd7d1243d9bc Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 30 Jun 2021 13:00:58 +0300 Subject: [PATCH] [FIR] Add specific checkers for each leaf declaration type --- .../kotlin/fir/checkers/generator/Main.kt | 7 +++++- .../ComposedDeclarationCheckers.kt | 24 +++++++++++++++++++ .../declaration/DeclarationCheckers.kt | 12 ++++++++++ .../FirDeclarationCheckerAliases.kt | 12 ++++++++++ .../expression/ComposedExpressionCheckers.kt | 4 ---- .../checkers/expression/ExpressionCheckers.kt | 2 -- .../expression/FirExpressionCheckerAliases.kt | 2 -- .../checkers/CommonDeclarationCheckers.kt | 10 +++++++- .../checkers/CommonExpressionCheckers.kt | 7 +----- .../declaration/FirPropertyAccessorChecker.kt | 2 +- ... FirAnonymousFunctionParametersChecker.kt} | 11 +++++---- .../FirAnonymousFunctionSyntaxChecker.kt | 2 +- .../DeclarationCheckersDiagnosticComponent.kt | 12 +++++----- .../ExpressionCheckersDiagnosticComponent.kt | 5 ---- 14 files changed, 79 insertions(+), 33 deletions(-) rename compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/{FirAnonymousFunctionChecker.kt => FirAnonymousFunctionParametersChecker.kt} (60%) diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt index dd9a0e530c5..9bd6933af69 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt @@ -43,7 +43,6 @@ fun main(args: Array) { alias("GetClassCallChecker") alias("SafeCallExpressionChecker") alias("EqualityOperatorCallChecker") - alias("AnonymousFunctionAsExpressionChecker") alias("StringConcatenationCallChecker") alias("TypeOperatorCallChecker") alias("ResolvedQualifierChecker") @@ -62,6 +61,12 @@ fun main(args: Array) { alias("FirTypeParameterChecker") alias("FirAnnotatedDeclarationChecker") alias("TypeAliasChecker") + alias("AnonymousFunctionChecker") + alias("PropertyAccessorChecker") + alias("ValueParameterChecker") + alias("EnumEntryChecker") + alias("AnonymousObjectChecker") + alias("AnonymousInitializerChecker") additional( fieldName = "controlFlowAnalyserCheckers", diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt index d08f28b991c..240ca0ae349 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/ComposedDeclarationCheckers.kt @@ -37,6 +37,18 @@ class ComposedDeclarationCheckers : DeclarationCheckers() { get() = _annotatedDeclarationCheckers override val typeAliasCheckers: Set get() = _typeAliasCheckers + override val anonymousFunctionCheckers: Set + get() = _anonymousFunctionCheckers + override val propertyAccessorCheckers: Set + get() = _propertyAccessorCheckers + override val valueParameterCheckers: Set + get() = _valueParameterCheckers + override val enumEntryCheckers: Set + get() = _enumEntryCheckers + override val anonymousObjectCheckers: Set + get() = _anonymousObjectCheckers + override val anonymousInitializerCheckers: Set + get() = _anonymousInitializerCheckers override val controlFlowAnalyserCheckers: Set get() = _controlFlowAnalyserCheckers override val variableAssignmentCfaBasedCheckers: Set @@ -53,6 +65,12 @@ class ComposedDeclarationCheckers : DeclarationCheckers() { private val _typeParameterCheckers: MutableSet = mutableSetOf() private val _annotatedDeclarationCheckers: MutableSet = mutableSetOf() private val _typeAliasCheckers: MutableSet = mutableSetOf() + private val _anonymousFunctionCheckers: MutableSet = mutableSetOf() + private val _propertyAccessorCheckers: MutableSet = mutableSetOf() + private val _valueParameterCheckers: MutableSet = mutableSetOf() + private val _enumEntryCheckers: MutableSet = mutableSetOf() + private val _anonymousObjectCheckers: MutableSet = mutableSetOf() + private val _anonymousInitializerCheckers: MutableSet = mutableSetOf() private val _controlFlowAnalyserCheckers: MutableSet = mutableSetOf() private val _variableAssignmentCfaBasedCheckers: MutableSet = mutableSetOf() @@ -69,6 +87,12 @@ class ComposedDeclarationCheckers : DeclarationCheckers() { _typeParameterCheckers += checkers.typeParameterCheckers _annotatedDeclarationCheckers += checkers.annotatedDeclarationCheckers _typeAliasCheckers += checkers.typeAliasCheckers + _anonymousFunctionCheckers += checkers.anonymousFunctionCheckers + _propertyAccessorCheckers += checkers.propertyAccessorCheckers + _valueParameterCheckers += checkers.valueParameterCheckers + _enumEntryCheckers += checkers.enumEntryCheckers + _anonymousObjectCheckers += checkers.anonymousObjectCheckers + _anonymousInitializerCheckers += checkers.anonymousInitializerCheckers _controlFlowAnalyserCheckers += checkers.controlFlowAnalyserCheckers _variableAssignmentCfaBasedCheckers += checkers.variableAssignmentCfaBasedCheckers } diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt index 18708efb35c..4e3fb770f6a 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/DeclarationCheckers.kt @@ -30,6 +30,12 @@ abstract class DeclarationCheckers { open val typeParameterCheckers: Set = emptySet() open val annotatedDeclarationCheckers: Set = emptySet() open val typeAliasCheckers: Set = emptySet() + open val anonymousFunctionCheckers: Set = emptySet() + open val propertyAccessorCheckers: Set = emptySet() + open val valueParameterCheckers: Set = emptySet() + open val enumEntryCheckers: Set = emptySet() + open val anonymousObjectCheckers: Set = emptySet() + open val anonymousInitializerCheckers: Set = emptySet() open val controlFlowAnalyserCheckers: Set = emptySet() open val variableAssignmentCfaBasedCheckers: Set = emptySet() @@ -45,4 +51,10 @@ abstract class DeclarationCheckers { @CheckersComponentInternal internal val allTypeParameterCheckers: Set get() = typeParameterCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers @CheckersComponentInternal internal val allAnnotatedDeclarationCheckers: Set get() = annotatedDeclarationCheckers + basicDeclarationCheckers @CheckersComponentInternal internal val allTypeAliasCheckers: Set get() = typeAliasCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allAnonymousFunctionCheckers: Set get() = anonymousFunctionCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allPropertyAccessorCheckers: Set get() = propertyAccessorCheckers + functionCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allValueParameterCheckers: Set get() = valueParameterCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allEnumEntryCheckers: Set get() = enumEntryCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allAnonymousObjectCheckers: Set get() = anonymousObjectCheckers + classCheckers + annotatedDeclarationCheckers + basicDeclarationCheckers + @CheckersComponentInternal internal val allAnonymousInitializerCheckers: Set get() = anonymousInitializerCheckers + basicDeclarationCheckers } diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt index ac8da7a91f7..84248e43c7c 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDeclarationCheckerAliases.kt @@ -11,16 +11,22 @@ package org.jetbrains.kotlin.fir.analysis.checkers.declaration */ import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration +import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction +import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer +import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclaration +import org.jetbrains.kotlin.fir.declarations.FirEnumEntry import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirProperty +import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.declarations.FirValueParameter typealias FirBasicDeclarationChecker = FirDeclarationChecker typealias FirFunctionChecker = FirDeclarationChecker @@ -33,3 +39,9 @@ typealias FirFileChecker = FirDeclarationChecker typealias FirTypeParameterChecker = FirDeclarationChecker typealias FirAnnotatedDeclarationChecker = FirDeclarationChecker typealias FirTypeAliasChecker = FirDeclarationChecker +typealias FirAnonymousFunctionChecker = FirDeclarationChecker +typealias FirPropertyAccessorChecker = FirDeclarationChecker +typealias FirValueParameterChecker = FirDeclarationChecker +typealias FirEnumEntryChecker = FirDeclarationChecker +typealias FirAnonymousObjectChecker = FirDeclarationChecker +typealias FirAnonymousInitializerChecker = FirDeclarationChecker diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt index 807bc779f4b..ba19d0701bc 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt @@ -47,8 +47,6 @@ class ComposedExpressionCheckers : ExpressionCheckers() { get() = _safeCallExpressionCheckers override val equalityOperatorCallCheckers: Set get() = _equalityOperatorCallCheckers - override val anonymousFunctionAsExpressionCheckers: Set - get() = _anonymousFunctionAsExpressionCheckers override val stringConcatenationCallCheckers: Set get() = _stringConcatenationCallCheckers override val typeOperatorCallCheckers: Set @@ -73,7 +71,6 @@ class ComposedExpressionCheckers : ExpressionCheckers() { private val _getClassCallCheckers: MutableSet = mutableSetOf() private val _safeCallExpressionCheckers: MutableSet = mutableSetOf() private val _equalityOperatorCallCheckers: MutableSet = mutableSetOf() - private val _anonymousFunctionAsExpressionCheckers: MutableSet = mutableSetOf() private val _stringConcatenationCallCheckers: MutableSet = mutableSetOf() private val _typeOperatorCallCheckers: MutableSet = mutableSetOf() private val _resolvedQualifierCheckers: MutableSet = mutableSetOf() @@ -97,7 +94,6 @@ class ComposedExpressionCheckers : ExpressionCheckers() { _getClassCallCheckers += checkers.getClassCallCheckers _safeCallExpressionCheckers += checkers.safeCallExpressionCheckers _equalityOperatorCallCheckers += checkers.equalityOperatorCallCheckers - _anonymousFunctionAsExpressionCheckers += checkers.anonymousFunctionAsExpressionCheckers _stringConcatenationCallCheckers += checkers.stringConcatenationCallCheckers _typeOperatorCallCheckers += checkers.typeOperatorCallCheckers _resolvedQualifierCheckers += checkers.resolvedQualifierCheckers diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt index 649635bb28a..b5ee3f41226 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt @@ -34,7 +34,6 @@ abstract class ExpressionCheckers { open val getClassCallCheckers: Set = emptySet() open val safeCallExpressionCheckers: Set = emptySet() open val equalityOperatorCallCheckers: Set = emptySet() - open val anonymousFunctionAsExpressionCheckers: Set = emptySet() open val stringConcatenationCallCheckers: Set = emptySet() open val typeOperatorCallCheckers: Set = emptySet() open val resolvedQualifierCheckers: Set = emptySet() @@ -56,7 +55,6 @@ abstract class ExpressionCheckers { @CheckersComponentInternal internal val allGetClassCallCheckers: Set get() = getClassCallCheckers + basicExpressionCheckers @CheckersComponentInternal internal val allSafeCallExpressionCheckers: Set get() = safeCallExpressionCheckers + basicExpressionCheckers @CheckersComponentInternal internal val allEqualityOperatorCallCheckers: Set get() = equalityOperatorCallCheckers + basicExpressionCheckers - @CheckersComponentInternal internal val allAnonymousFunctionAsExpressionCheckers: Set get() = anonymousFunctionAsExpressionCheckers + basicExpressionCheckers @CheckersComponentInternal internal val allStringConcatenationCallCheckers: Set get() = stringConcatenationCallCheckers + basicExpressionCheckers @CheckersComponentInternal internal val allTypeOperatorCallCheckers: Set get() = typeOperatorCallCheckers + basicExpressionCheckers @CheckersComponentInternal internal val allResolvedQualifierCheckers: Set get() = resolvedQualifierCheckers + basicExpressionCheckers diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt index a6221e0f6b6..c439c012fe1 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt @@ -10,7 +10,6 @@ package org.jetbrains.kotlin.fir.analysis.checkers.expression * DO NOT MODIFY IT MANUALLY */ -import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBinaryLogicExpression import org.jetbrains.kotlin.fir.expressions.FirBlock @@ -49,7 +48,6 @@ typealias FirElvisExpressionChecker = FirExpressionChecker typealias FirGetClassCallChecker = FirExpressionChecker typealias FirSafeCallExpressionChecker = FirExpressionChecker typealias FirEqualityOperatorCallChecker = FirExpressionChecker -typealias FirAnonymousFunctionAsExpressionChecker = FirExpressionChecker typealias FirStringConcatenationCallChecker = FirExpressionChecker typealias FirTypeOperatorCallChecker = FirExpressionChecker typealias FirResolvedQualifierChecker = FirExpressionChecker 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 e047f3b7380..c2ef82a7066 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 @@ -11,7 +11,9 @@ import org.jetbrains.kotlin.fir.analysis.cfa.FirPropertyInitializationAnalyzer import org.jetbrains.kotlin.fir.analysis.cfa.FirReturnsImpliesAnalyzer import org.jetbrains.kotlin.fir.analysis.checkers.cfa.FirControlFlowChecker import org.jetbrains.kotlin.fir.analysis.checkers.declaration.* +import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnonymousFunctionParametersChecker import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirReservedUnderscoreDeclarationChecker +import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirAnonymousFunctionSyntaxChecker import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirDelegationInInterfaceSyntaxChecker import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirFunctionTypeParametersSyntaxChecker import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirTypeParameterSyntaxChecker @@ -48,7 +50,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirInapplicableLateinitChecker, FirDestructuringDeclarationChecker, FirConstPropertyChecker, - FirPropertyAccessorChecker, + FirPropertyAccessorsTypesChecker, FirPropertyTypeParametersChecker, FirInitializerTypeMismatchChecker, FirDelegatedPropertyChecker, @@ -128,4 +130,10 @@ object CommonDeclarationCheckers : DeclarationCheckers() { get() = setOf( FirTopLevelTypeAliasChecker, ) + + override val anonymousFunctionCheckers: Set + get() = setOf( + FirAnonymousFunctionParametersChecker, + FirAnonymousFunctionSyntaxChecker, + ) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt index efb710c26b1..bb7334c0c7a 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.analysis.checkers +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirAnonymousFunctionChecker import org.jetbrains.kotlin.fir.analysis.checkers.expression.* import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirAnonymousFunctionSyntaxChecker @@ -103,12 +104,6 @@ object CommonExpressionCheckers : ExpressionCheckers() { FirUnnecessarySafeCallChecker, ) - override val anonymousFunctionAsExpressionCheckers: Set - get() = setOf( - FirAnonymousFunctionChecker, - FirAnonymousFunctionSyntaxChecker, - ) - override val typeOperatorCallCheckers: Set get() = setOf( FirUselessTypeOperationCallChecker, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirPropertyAccessorChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirPropertyAccessorChecker.kt index ceaf8ea62a2..df4b91b8bd7 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirPropertyAccessorChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirPropertyAccessorChecker.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.types.ConeClassErrorType import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.types.isUnit -object FirPropertyAccessorChecker : FirPropertyChecker() { +object FirPropertyAccessorsTypesChecker : FirPropertyChecker() { override fun check(declaration: FirProperty, context: CheckerContext, reporter: DiagnosticReporter) { checkGetter(declaration, context, reporter) checkSetter(declaration, context, reporter) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnonymousFunctionChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnonymousFunctionParametersChecker.kt similarity index 60% rename from compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnonymousFunctionChecker.kt rename to compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnonymousFunctionParametersChecker.kt index 984b2276011..8fcb7679ee0 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnonymousFunctionChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnonymousFunctionParametersChecker.kt @@ -6,12 +6,15 @@ package org.jetbrains.kotlin.fir.analysis.checkers.expression import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext -import org.jetbrains.kotlin.fir.analysis.diagnostics.* +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirAnonymousFunctionChecker +import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors +import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction -object FirAnonymousFunctionChecker : FirAnonymousFunctionAsExpressionChecker() { - override fun check(expression: FirAnonymousFunction, context: CheckerContext, reporter: DiagnosticReporter) { - for (valueParameter in expression.valueParameters) { +object FirAnonymousFunctionParametersChecker : FirAnonymousFunctionChecker() { + override fun check(declaration: FirAnonymousFunction, context: CheckerContext, reporter: DiagnosticReporter) { + for (valueParameter in declaration.valueParameters) { val source = valueParameter.source ?: continue if (valueParameter.defaultValue != null) { reporter.reportOn(source, FirErrors.ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE, context) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/syntax/FirAnonymousFunctionSyntaxChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/syntax/FirAnonymousFunctionSyntaxChecker.kt index d5b02082e82..1736bdee257 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/syntax/FirAnonymousFunctionSyntaxChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/syntax/FirAnonymousFunctionSyntaxChecker.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.typeParametersList import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.psi.KtFunction -object FirAnonymousFunctionSyntaxChecker : FirExpressionSyntaxChecker() { +object FirAnonymousFunctionSyntaxChecker : FirDeclarationSyntaxChecker() { override fun checkPsi( element: FirAnonymousFunction, source: FirPsiSourceElement, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt index 9d4cb8f7759..d64ae4b4330 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/DeclarationCheckersDiagnosticComponent.kt @@ -50,15 +50,15 @@ class DeclarationCheckersDiagnosticComponent( } override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: CheckerContext) { - checkers.allAnnotatedDeclarationCheckers.check(anonymousFunction, data, reporter) + checkers.allAnonymousFunctionCheckers.check(anonymousFunction, data, reporter) } override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: CheckerContext) { - checkers.allAnnotatedDeclarationCheckers.check(propertyAccessor, data, reporter) + checkers.allPropertyAccessorCheckers.check(propertyAccessor, data, reporter) } override fun visitValueParameter(valueParameter: FirValueParameter, data: CheckerContext) { - checkers.allAnnotatedDeclarationCheckers.check(valueParameter, data, reporter) + checkers.allValueParameterCheckers.check(valueParameter, data, reporter) } override fun visitTypeParameter(typeParameter: FirTypeParameter, data: CheckerContext) { @@ -66,15 +66,15 @@ class DeclarationCheckersDiagnosticComponent( } override fun visitEnumEntry(enumEntry: FirEnumEntry, data: CheckerContext) { - checkers.allBasicDeclarationCheckers.check(enumEntry, data, reporter) + checkers.allEnumEntryCheckers.check(enumEntry, data, reporter) } override fun visitAnonymousObject(anonymousObject: FirAnonymousObject, data: CheckerContext) { - checkers.allClassCheckers.check(anonymousObject, data, reporter) + checkers.allAnonymousObjectCheckers.check(anonymousObject, data, reporter) } override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: CheckerContext) { - checkers.allBasicDeclarationCheckers.check(anonymousInitializer, data, reporter) + checkers.allAnonymousInitializerCheckers.check(anonymousInitializer, data, reporter) } private fun Collection>.check( diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt index d716672efc8..0dd08b65a50 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt @@ -21,11 +21,6 @@ class ExpressionCheckersDiagnosticComponent( reporter: DiagnosticReporter, private val checkers: ExpressionCheckers = session.checkersComponent.expressionCheckers, ) : AbstractDiagnosticCollectorComponent(session, reporter) { - - override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: CheckerContext) { - checkers.allAnonymousFunctionAsExpressionCheckers.check(anonymousFunction, data, reporter) - } - override fun visitTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall, data: CheckerContext) { checkers.allTypeOperatorCallCheckers.check(typeOperatorCall, data, reporter) }