From 8eb0ca705d68ba18ce2bbd09d9410aa8c12ee6f1 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Thu, 6 Oct 2022 10:03:21 +0200 Subject: [PATCH] [FIR] fix memory leak via static ConeClassLikeTypeImpl ConeClassLikeLookupTagImpl.boundSymbol contains weak reference to FirSession --- .../declaration/FirOperatorModifierChecker.kt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOperatorModifierChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOperatorModifierChecker.kt index 27e09e06e7f..5ee2872da10 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOperatorModifierChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOperatorModifierChecker.kt @@ -143,15 +143,16 @@ private object Checks { } } - private val kPropertyType = ConeClassLikeTypeImpl( - ConeClassLikeLookupTagImpl(StandardClassIds.KProperty), - arrayOf(ConeStarProjection), - isNullable = false - ) - val isKProperty = full("second parameter must be of type KProperty<*> or its supertype") { ctx, function -> val paramType = function.valueParameters[1].returnTypeRef.coneType - paramType.isSupertypeOf(ctx.session.typeContext, kPropertyType) + paramType.isSupertypeOf( + ctx.session.typeContext, + ConeClassLikeTypeImpl( + ConeClassLikeLookupTagImpl(StandardClassIds.KProperty), + arrayOf(ConeStarProjection), + isNullable = false + ) + ) } }