From 9da29d46aa675a666859d940e2ee25d82ce0202a Mon Sep 17 00:00:00 2001 From: Nikita Bobko Date: Tue, 12 Dec 2023 18:11:43 +0100 Subject: [PATCH] FirElementSerializer cleanup Review: https://jetbrains.team/p/kt/reviews/13495/timeline --- .../fir/serialization/FirElementSerializer.kt | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt index a138d288222..15f1eee1532 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt @@ -411,27 +411,19 @@ class FirElementSerializer private constructor( ): List { val foundInScope = buildList { val memberScope = unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false, memberRequiredPhase = null) - processScope(memberScope) l@{ + processScope(memberScope) { val declaration = it.fir as T val dispatchReceiverLookupTag = declaration.dispatchReceiverClassLookupTagOrNull() // Special case for data/value class equals/hashCode/toString, see KT-57510 - val isOverrideOfAnyFunctionInDataOrValueClass = this@collectDeclarations is FirRegularClass && + val isFakeOverrideOfAnyFunctionInDataOrValueClass = this@collectDeclarations is FirRegularClass && (this@collectDeclarations.isData || this@collectDeclarations.isInline) && dispatchReceiverLookupTag?.classId == StandardClassIds.Any && !declaration.isFinal - if (declaration.isSubstitutionOrIntersectionOverride) { - if (!isOverrideOfAnyFunctionInDataOrValueClass) { - return@l - } - } else if (!(declaration.isStatic || declaration is FirConstructor)) { - // non-intersection or substitution fake override - if (dispatchReceiverLookupTag != this@collectDeclarations.symbol.toLookupTag()) { - if (!isOverrideOfAnyFunctionInDataOrValueClass) { - return@l - } - } + if (isFakeOverrideOfAnyFunctionInDataOrValueClass || + !declaration.isSubstitutionOrIntersectionOverride && + (declaration.isStatic || declaration is FirConstructor || dispatchReceiverLookupTag == this@collectDeclarations.symbol.toLookupTag()) + ) { + add(declaration) } - - add(declaration) } for (declaration in declarations) {