[FIR] Force checker components to create checkers sets on each access

This is needed to add ability to recreate checkers which are not objects
  for each session
This commit is contained in:
Dmitriy Novozhilov
2021-04-14 13:24:17 +03:00
parent 1f62a2d8cc
commit 085bddbfc0
5 changed files with 161 additions and 135 deletions
@@ -13,90 +13,101 @@ import org.jetbrains.kotlin.fir.analysis.checkers.cfa.FirControlFlowChecker
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.*
object CommonDeclarationCheckers : DeclarationCheckers() {
override val basicDeclarationCheckers: Set<FirBasicDeclarationChecker> = setOf(
FirAnnotationArgumentChecker,
FirModifierChecker,
FirConflictsChecker,
FirConflictingProjectionChecker,
FirTypeConstraintsChecker,
)
override val basicDeclarationCheckers: Set<FirBasicDeclarationChecker>
get() = setOf(
FirAnnotationArgumentChecker,
FirModifierChecker,
FirConflictsChecker,
FirConflictingProjectionChecker,
FirTypeConstraintsChecker,
)
override val memberDeclarationCheckers: Set<FirMemberDeclarationChecker> = setOf(
FirInfixFunctionDeclarationChecker,
FirExposedVisibilityDeclarationChecker,
FirSealedSupertypeChecker,
FirTypeAliasChecker,
override val memberDeclarationCheckers: Set<FirMemberDeclarationChecker>
get() = setOf(
FirInfixFunctionDeclarationChecker,
FirExposedVisibilityDeclarationChecker,
FirSealedSupertypeChecker,
FirTypeAliasChecker,
FirCyclicTypeBoundsChecker,
)
override val functionCheckers: Set<FirFunctionChecker> = setOf(
FirContractChecker,
FirFunctionParameterChecker,
)
override val functionCheckers: Set<FirFunctionChecker>
get() = setOf(
FirContractChecker,
FirFunctionParameterChecker,
)
override val simpleFunctionCheckers: Set<FirSimpleFunctionChecker> = setOf(
FirFunctionNameChecker,
override val simpleFunctionCheckers: Set<FirSimpleFunctionChecker>
get() = setOf(
FirFunctionNameChecker,
FirFunctionTypeParametersChecker,
)
override val propertyCheckers: Set<FirPropertyChecker> = setOf(
FirInapplicableLateinitChecker,
FirDestructuringDeclarationChecker,
FirConstPropertyChecker,
FirPropertyAccessorChecker,
FirPropertyTypeParametersChecker,
FirPropertyAccessorChecker,
FirInitializerTypeMismatchChecker
)
override val propertyCheckers: Set<FirPropertyChecker>
get() = setOf(
FirInapplicableLateinitChecker,
FirDestructuringDeclarationChecker,
FirConstPropertyChecker,
FirPropertyAccessorChecker,
FirPropertyTypeParametersChecker,
FirPropertyAccessorChecker,FirInitializerTypeMismatchChecker
)
override val classCheckers: Set<FirClassChecker> = setOf(
FirOverrideChecker,
FirNotImplementedOverrideChecker,
FirThrowableSubclassChecker,
FirOpenMemberChecker,
)
override val classCheckers: Set<FirClassChecker>
get() = setOf(
FirOverrideChecker,
FirNotImplementedOverrideChecker,
FirThrowableSubclassChecker,
FirOpenMemberChecker,
)
override val regularClassCheckers: Set<FirRegularClassChecker> = setOf(
FirAnnotationClassDeclarationChecker,
FirCommonConstructorDelegationIssuesChecker,
FirConstructorInInterfaceChecker,
FirDelegationSuperCallInEnumConstructorChecker,
FirDelegationInInterfaceChecker,
FirEnumClassSimpleChecker,
FirInterfaceWithSuperclassChecker,
FirLocalEntityNotAllowedChecker,
FirManyCompanionObjectsChecker,
FirMethodOfAnyImplementedInInterfaceChecker,
FirDataClassPrimaryConstructorChecker,
FirPrimaryConstructorSuperTypeChecker,
FirTypeParametersInObjectChecker,
FirMemberFunctionsChecker,
FirMemberPropertiesChecker,
FirNestedClassChecker,
FirInlineClassDeclarationChecker,
)
override val regularClassCheckers: Set<FirRegularClassChecker>
get() = setOf(
FirAnnotationClassDeclarationChecker,
FirCommonConstructorDelegationIssuesChecker,
FirConstructorInInterfaceChecker,
FirDelegationSuperCallInEnumConstructorChecker,
FirDelegationInInterfaceChecker,
FirEnumClassSimpleChecker,
FirInterfaceWithSuperclassChecker,
FirLocalEntityNotAllowedChecker,
FirManyCompanionObjectsChecker,
FirMethodOfAnyImplementedInInterfaceChecker,
FirDataClassPrimaryConstructorChecker,
FirPrimaryConstructorSuperTypeChecker,
FirTypeParametersInObjectChecker,
FirMemberFunctionsChecker,
FirMemberPropertiesChecker,
FirNestedClassChecker,
FirInlineClassDeclarationChecker,
)
override val constructorCheckers: Set<FirConstructorChecker> = setOf(
FirConstructorAllowedChecker,
)
override val constructorCheckers: Set<FirConstructorChecker>
get() = setOf(
FirConstructorAllowedChecker,
)
override val fileCheckers: Set<FirFileChecker> = setOf(
FirKClassWithIncorrectTypeArgumentChecker,
FirTopLevelFunctionsChecker,
FirTopLevelPropertiesChecker,
)
override val fileCheckers: Set<FirFileChecker>
get() = setOf(
FirKClassWithIncorrectTypeArgumentChecker,
FirTopLevelFunctionsChecker,
FirTopLevelPropertiesChecker,
)
override val controlFlowAnalyserCheckers: Set<FirControlFlowChecker> = setOf(
FirCallsEffectAnalyzer,
FirReturnsImpliesAnalyzer,
)
override val controlFlowAnalyserCheckers: Set<FirControlFlowChecker>
get() = setOf(
FirCallsEffectAnalyzer,
FirReturnsImpliesAnalyzer,
)
override val variableAssignmentCfaBasedCheckers: Set<AbstractFirPropertyInitializationChecker> = setOf(
FirPropertyInitializationAnalyzer,
)
override val variableAssignmentCfaBasedCheckers: Set<AbstractFirPropertyInitializationChecker>
get() = setOf(
FirPropertyInitializationAnalyzer,
)
override val typeParameterCheckers: Set<FirTypeParameterChecker> = setOf(
FirTypeParameterBoundsChecker,
override val typeParameterCheckers: Set<FirTypeParameterChecker>
get() = setOf(
FirTypeParameterBoundsChecker,
FirTypeParameterVarianceChecker,
FirReifiedTypeParameterChecker,
)
@@ -8,48 +8,55 @@ package org.jetbrains.kotlin.fir.checkers
import org.jetbrains.kotlin.fir.analysis.checkers.expression.*
object CommonExpressionCheckers : ExpressionCheckers() {
override val basicExpressionCheckers: Set<FirBasicExpressionChecker> = setOf(
FirAnonymousFunctionChecker,
FirCheckNotNullCallChecker,
FirGetClassCallChecker,
FirSafeCallExpressionChecker,
)
override val basicExpressionCheckers: Set<FirBasicExpressionChecker>
get() = setOf(
FirAnonymousFunctionChecker,
FirCheckNotNullCallChecker,
FirGetClassCallChecker,
FirSafeCallExpressionChecker,
)
override val qualifiedAccessCheckers: Set<FirQualifiedAccessChecker> = setOf(
FirCallableReferenceChecker,
FirSuperNotAvailableChecker,
FirNotASupertypeChecker,
FirSuperclassNotAccessibleFromInterfaceChecker,
FirAbstractSuperCallChecker,
FirQualifiedSupertypeExtendedByOtherSupertypeChecker,
FirProjectionsOnNonClassTypeArgumentChecker,
FirUpperBoundViolatedChecker,
FirTypeArgumentsNotAllowedExpressionChecker,
FirTypeParameterInQualifiedAccessChecker,
FirSealedClassConstructorCallChecker,
FirUninitializedEnumChecker,
override val qualifiedAccessCheckers: Set<FirQualifiedAccessChecker>
get() = setOf(
FirCallableReferenceChecker,
FirSuperNotAvailableChecker,
FirNotASupertypeChecker,
FirSuperclassNotAccessibleFromInterfaceChecker,
FirAbstractSuperCallChecker,
FirQualifiedSupertypeExtendedByOtherSupertypeChecker,
FirProjectionsOnNonClassTypeArgumentChecker,
FirUpperBoundViolatedChecker,
FirTypeArgumentsNotAllowedExpressionChecker,
FirTypeParameterInQualifiedAccessChecker,
FirSealedClassConstructorCallChecker,
FirUninitializedEnumChecker,
FirFunInterfaceConstructorReferenceChecker,
)
override val functionCallCheckers: Set<FirFunctionCallChecker> = setOf(
FirConventionFunctionCallChecker,
FirDivisionByZeroChecker
)
override val functionCallCheckers: Set<FirFunctionCallChecker>
get() = setOf(
FirConventionFunctionCallChecker,
FirDivisionByZeroChecker
)
override val tryExpressionCheckers: Set<FirTryExpressionChecker> = setOf(
FirCatchParameterChecker
)
override val tryExpressionCheckers: Set<FirTryExpressionChecker>
get() = setOf(
FirCatchParameterChecker
)
override val variableAssignmentCheckers: Set<FirVariableAssignmentChecker> = setOf(
FirValReassignmentViaBackingFieldChecker
)
override val variableAssignmentCheckers: Set<FirVariableAssignmentChecker>
get() = setOf(
FirValReassignmentViaBackingFieldChecker
)
override val whenExpressionCheckers: Set<FirWhenExpressionChecker> = setOf(
FirExhaustiveWhenChecker
)
override val whenExpressionCheckers: Set<FirWhenExpressionChecker>
get() = setOf(
FirExhaustiveWhenChecker
)
override val returnExpressionCheckers: Set<FirReturnExpressionChecker> = setOf(
FirReturnAllowedChecker,
FirFunctionReturnTypeMismatchChecker
)
override val returnExpressionCheckers: Set<FirReturnExpressionChecker>
get() = setOf(
FirReturnAllowedChecker,
FirFunctionReturnTypeMismatchChecker
)
}
@@ -15,22 +15,26 @@ import org.jetbrains.kotlin.fir.analysis.checkers.extended.*
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
object ExtendedDeclarationCheckers : DeclarationCheckers() {
override val basicDeclarationCheckers: Set<FirBasicDeclarationChecker> = setOf(
RedundantVisibilityModifierChecker,
RedundantReturnUnitType,
)
override val basicDeclarationCheckers: Set<FirBasicDeclarationChecker>
get() = setOf(
RedundantVisibilityModifierChecker,
RedundantReturnUnitType,
)
override val memberDeclarationCheckers: Set<FirMemberDeclarationChecker> = setOf(
RedundantModalityModifierChecker,
RedundantExplicitTypeChecker,
RedundantSetterParameterTypeChecker,
)
override val memberDeclarationCheckers: Set<FirMemberDeclarationChecker>
get() = setOf(
RedundantModalityModifierChecker,
RedundantExplicitTypeChecker,
RedundantSetterParameterTypeChecker,
)
override val variableAssignmentCfaBasedCheckers: Set<AbstractFirPropertyInitializationChecker> = setOf(
CanBeValChecker,
)
override val variableAssignmentCfaBasedCheckers: Set<AbstractFirPropertyInitializationChecker>
get() = setOf(
CanBeValChecker,
)
override val controlFlowAnalyserCheckers: Set<FirControlFlowChecker> = setOf(
UnusedChecker,
)
override val controlFlowAnalyserCheckers: Set<FirControlFlowChecker>
get() = setOf(
UnusedChecker,
)
}
@@ -12,18 +12,21 @@ import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirVariableAssignme
import org.jetbrains.kotlin.fir.analysis.checkers.extended.*
object ExtendedExpressionCheckers : ExpressionCheckers() {
override val basicExpressionCheckers: Set<FirBasicExpressionChecker> = setOf(
ArrayEqualityCanBeReplacedWithEquals,
RedundantSingleExpressionStringTemplateChecker,
EmptyRangeChecker,
)
override val basicExpressionCheckers: Set<FirBasicExpressionChecker>
get() = setOf(
ArrayEqualityCanBeReplacedWithEquals,
RedundantSingleExpressionStringTemplateChecker,
EmptyRangeChecker,
)
override val variableAssignmentCheckers: Set<FirVariableAssignmentChecker> = setOf(
CanBeReplacedWithOperatorAssignmentChecker,
)
override val variableAssignmentCheckers: Set<FirVariableAssignmentChecker>
get() = setOf(
CanBeReplacedWithOperatorAssignmentChecker,
)
override val qualifiedAccessCheckers: Set<FirQualifiedAccessChecker> = setOf(
RedundantCallOfConversionMethod,
UselessCallOnNotNullChecker,
)
override val qualifiedAccessCheckers: Set<FirQualifiedAccessChecker>
get() = setOf(
RedundantCallOfConversionMethod,
UselessCallOnNotNullChecker,
)
}
@@ -10,7 +10,8 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.jvm.FirJvmExternal
// TODO: Move this to different, JVM-specific module?
object JvmDeclarationCheckers : DeclarationCheckers() {
override val memberDeclarationCheckers: Set<FirMemberDeclarationChecker> = setOf(
FirJvmExternalDeclarationChecker,
)
override val memberDeclarationCheckers: Set<FirMemberDeclarationChecker>
get() = setOf(
FirJvmExternalDeclarationChecker,
)
}