[FIR] Turn some checkers into classes to prevent memory leaks

This is temporary solution until those checkers will be fixed
#KT-46058
This commit is contained in:
Dmitriy Novozhilov
2021-04-14 13:24:35 +03:00
parent 085bddbfc0
commit dd96c3b56e
4 changed files with 7 additions and 7 deletions
@@ -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<ConeKotlinType>? = null
private fun getPrimitiveTypes(context: CheckerContext) = primitives ?: mutableSetOf<ConeKotlinType>().apply {
@@ -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)
}
}
}
@@ -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 {
@@ -45,7 +45,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() {
override val propertyCheckers: Set<FirPropertyChecker>
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<FirConstructorChecker>