From dd96c3b56e77ca64ff44b12e76afb2ef9eb7f2a7 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 14 Apr 2021 13:24:35 +0300 Subject: [PATCH] [FIR] Turn some checkers into classes to prevent memory leaks This is temporary solution until those checkers will be fixed #KT-46058 --- .../checkers/declaration/FirInapplicableLateinitChecker.kt | 2 +- .../declaration/FirInlineClassDeclarationChecker.kt | 4 ++-- .../FirMethodOfAnyImplementedInInterfaceChecker.kt | 2 +- .../kotlin/fir/checkers/CommonDeclarationCheckers.kt | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInapplicableLateinitChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInapplicableLateinitChecker.kt index f129e7dc403..a25f80e94b5 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInapplicableLateinitChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInapplicableLateinitChecker.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.types.ConeTypeParameterType import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.types.isNullable -object FirInapplicableLateinitChecker : FirPropertyChecker() { +class FirInapplicableLateinitChecker : FirPropertyChecker() { var primitives: Set? = null private fun getPrimitiveTypes(context: CheckerContext) = primitives ?: mutableSetOf().apply { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt index 252cfd50b36..7e427739e1b 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineClassDeclarationChecker.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.types.AbstractTypeChecker -object FirInlineClassDeclarationChecker : FirRegularClassChecker() { +class FirInlineClassDeclarationChecker : FirRegularClassChecker() { private val reservedFunctionNames = setOf("box", "unbox", "equals", "hashCode") private val kotlinCloneableType = ClassId.fromString("kotlin/Cloneable").constructClassLikeType(emptyArray(), false) @@ -215,4 +215,4 @@ object FirInlineClassDeclarationChecker : FirRegularClassChecker() { return AbstractTypeChecker.isSubtypeOf(typeContext, coneType, kotlinCloneableType) || AbstractTypeChecker.isSubtypeOf(typeContext, coneType, javaCloneableType) } -} \ No newline at end of file +} diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMethodOfAnyImplementedInInterfaceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMethodOfAnyImplementedInInterfaceChecker.kt index 06950a91ccd..88c613f9d1a 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMethodOfAnyImplementedInInterfaceChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirMethodOfAnyImplementedInInterfaceChecker.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.resolve.symbolProvider import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.utils.addToStdlib.safeAs -object FirMethodOfAnyImplementedInInterfaceChecker : FirRegularClassChecker(), FirDeclarationPresenter { +class FirMethodOfAnyImplementedInInterfaceChecker : FirRegularClassChecker(), FirDeclarationPresenter { private var inspector: FirDeclarationInspector? = null private fun getInspector(context: CheckerContext) = inspector ?: FirDeclarationInspector(this).apply { diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt index ea3d68d9d51..66ade1ebbe1 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CommonDeclarationCheckers.kt @@ -45,7 +45,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() { override val propertyCheckers: Set get() = setOf( - FirInapplicableLateinitChecker, + FirInapplicableLateinitChecker(), FirDestructuringDeclarationChecker, FirConstPropertyChecker, FirPropertyAccessorChecker, @@ -72,14 +72,14 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirInterfaceWithSuperclassChecker, FirLocalEntityNotAllowedChecker, FirManyCompanionObjectsChecker, - FirMethodOfAnyImplementedInInterfaceChecker, + FirMethodOfAnyImplementedInInterfaceChecker(), FirDataClassPrimaryConstructorChecker, FirPrimaryConstructorSuperTypeChecker, FirTypeParametersInObjectChecker, FirMemberFunctionsChecker, FirMemberPropertiesChecker, FirNestedClassChecker, - FirInlineClassDeclarationChecker, + FirInlineClassDeclarationChecker(), ) override val constructorCheckers: Set