From dfef1f49214e88d67ddfd0a5f3d014166386dd3b Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Sat, 15 Jul 2017 14:55:10 +0300 Subject: [PATCH] Add reference equality shortcut for equals() in light members --- .../kotlin/asJava/elements/KtLightFieldImpl.kt | 7 ++++--- .../kotlin/asJava/elements/KtLightMethodImpl.kt | 11 ++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightFieldImpl.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightFieldImpl.kt index 8ffbbe06776..2f27a57175a 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightFieldImpl.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightFieldImpl.kt @@ -60,9 +60,10 @@ sealed class KtLightFieldImpl( } override fun equals(other: Any?): Boolean = - other is KtLightFieldImpl<*> && - this.name == other.name && - this.containingClass == other.containingClass + this === other || + (other is KtLightFieldImpl<*> && + this.name == other.name && + this.containingClass == other.containingClass) override fun hashCode() = 31 * containingClass.hashCode() + name.hashCode() diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt index 39f8598cc5d..c029a5438dd 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt @@ -147,11 +147,12 @@ class KtLightMethodImpl private constructor( for source elements index is unique to each member */ override fun equals(other: Any?): Boolean = - other is KtLightMethodImpl && - this.name == other.name && - this.containingClass == other.containingClass && - this.lightMemberOrigin == other.lightMemberOrigin && - this._memberIndex == other._memberIndex + this === other || + (other is KtLightMethodImpl && + this.name == other.name && + this.containingClass == other.containingClass && + this.lightMemberOrigin == other.lightMemberOrigin && + this._memberIndex == other._memberIndex) override fun hashCode(): Int = ((getName().hashCode() * 31 + (lightMemberOrigin?.hashCode() ?: 0)) * 31 + containingClass.hashCode()) * 31 + (_memberIndex?.hashCode() ?: 0)