[FIR] Syntax checkers

Introduce base class for checkers that dive into source trees.
This commit is contained in:
Andrey Zinovyev
2021-04-27 11:02:00 +03:00
committed by teamcityserver
parent 1be39cb505
commit 787c743333
17 changed files with 407 additions and 144 deletions
@@ -11,6 +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.syntax.FirDelegationInInterfaceSyntaxChecker
import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirFunctionTypeParametersSyntaxChecker
import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirTypeParameterSyntaxChecker
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirReservedUnderscoreDeclarationChecker
object CommonDeclarationCheckers : DeclarationCheckers() {
@@ -43,7 +46,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
override val simpleFunctionCheckers: Set<FirSimpleFunctionChecker>
get() = setOf(
FirFunctionNameChecker,
FirFunctionTypeParametersChecker,
FirFunctionTypeParametersSyntaxChecker,
)
override val propertyCheckers: Set<FirPropertyChecker>
@@ -72,7 +75,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
FirCommonConstructorDelegationIssuesChecker,
FirConstructorInInterfaceChecker,
FirDelegationSuperCallInEnumConstructorChecker,
FirDelegationInInterfaceChecker,
FirDelegationInInterfaceSyntaxChecker,
FirEnumClassSimpleChecker,
FirInterfaceWithSuperclassChecker,
FirLocalEntityNotAllowedChecker,
@@ -82,11 +85,11 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
FirPrimaryConstructorSuperTypeChecker,
FirTypeParametersInObjectChecker,
FirFunInterfaceDeclarationChecker,
FirMemberFunctionsChecker,
FirMemberPropertiesChecker,
FirNestedClassChecker,
FirInlineClassDeclarationChecker,
)
FirMemberFunctionsChecker,
FirMemberPropertiesChecker,
FirNestedClassChecker,
FirInlineClassDeclarationChecker,
)
override val constructorCheckers: Set<FirConstructorChecker>
get() = setOf(
@@ -116,5 +119,6 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
FirTypeParameterBoundsChecker,
FirTypeParameterVarianceChecker,
FirReifiedTypeParameterChecker,
FirTypeParameterSyntaxChecker,
)
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.checkers
import org.jetbrains.kotlin.fir.analysis.checkers.expression.*
import org.jetbrains.kotlin.fir.analysis.checkers.syntax.FirAnonymousFunctionSyntaxChecker
object CommonExpressionCheckers : ExpressionCheckers() {
override val annotationCallCheckers: Set<FirAnnotationCallChecker>
@@ -92,6 +93,7 @@ object CommonExpressionCheckers : ExpressionCheckers() {
override val anonymousFunctionAsExpressionCheckers: Set<FirAnonymousFunctionAsExpressionChecker>
get() = setOf(
FirAnonymousFunctionChecker,
FirAnonymousFunctionSyntaxChecker,
)
override val typeOperatorCallCheckers: Set<FirTypeOperatorCallChecker>
@@ -9,17 +9,16 @@ import org.jetbrains.kotlin.fir.analysis.cfa.AbstractFirPropertyInitializationCh
import org.jetbrains.kotlin.fir.analysis.checkers.cfa.FirControlFlowChecker
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.*
import org.jetbrains.kotlin.fir.analysis.checkers.extended.*
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
object ExtendedDeclarationCheckers : DeclarationCheckers() {
override val basicDeclarationCheckers: Set<FirBasicDeclarationChecker>
get() = setOf(
RedundantVisibilityModifierChecker,
RedundantVisibilityModifierSyntaxChecker,
)
override val memberDeclarationCheckers: Set<FirMemberDeclarationChecker>
get() = setOf(
RedundantModalityModifierChecker,
RedundantModalityModifierSyntaxChecker,
RedundantExplicitTypeChecker,
RedundantSetterParameterTypeChecker,
)