From 30b7c4689b2f0cae790259037e1dac7b74ade44d Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Fri, 18 Feb 2022 17:36:08 +0700 Subject: [PATCH] [light classes] KtUltraLightParameterForDescriptor: fix descriptor leak ^KTIJ-21151 --- .../kotlin/asJava/classes/ultraLightParameters.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt index 8acb15b30f5..670f49954d5 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightParameters.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtFunction import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.psi.psiUtil.isPrivate +import org.jetbrains.kotlin.resolve.indexOrMinusOne import org.jetbrains.kotlin.types.KotlinType internal class KtUltraLightSuspendContinuationParameter( @@ -264,7 +265,7 @@ internal class KtUltraLightReceiverParameter( } internal class KtUltraLightParameterForDescriptor( - private val descriptor: ParameterDescriptor, + descriptor: ParameterDescriptor, support: KtUltraLightSupport, method: KtUltraLightMethod ) : KtUltraLightParameter( @@ -297,12 +298,16 @@ internal class KtUltraLightParameterForDescriptor( computeParameterType(descriptor.type, descriptor.containingDeclaration as? CallableMemberDescriptor) } + private val _index: Int by getAndAddLazy { + descriptor.indexOrMinusOne() + } + override fun getType(): PsiType = _parameterType override fun equals(other: Any?): Boolean = other === this || other is KtUltraLightParameterForDescriptor && other.name == this.name && - other.descriptor.type == this.descriptor.type && + other._index == this._index && other.method == this.method override fun hashCode(): Int = name.hashCode()