[FIR] Get rid of not needed set allocation in getSingleVisibleClassifier

This commit is contained in:
Ivan Kochurkin
2023-12-05 16:27:01 +01:00
committed by Space Team
parent 4f77434ea5
commit 8dcd4efbc1
@@ -76,13 +76,22 @@ fun FirScope.getSingleVisibleClassifier(
session: FirSession, session: FirSession,
bodyResolveComponents: BodyResolveComponents, bodyResolveComponents: BodyResolveComponents,
name: Name name: Name
): FirClassifierSymbol<*>? = mutableSetOf<FirClassifierSymbol<*>>().apply { ): FirClassifierSymbol<*>? {
var result: FirClassifierSymbol<*>? = null
var isAmbiguousResult = false
processClassifiersByName(name) { classifierSymbol -> processClassifiersByName(name) { classifierSymbol ->
if (!classifierSymbol.fir.isInvisibleOrHidden(session, bodyResolveComponents)) { if (!classifierSymbol.fir.isInvisibleOrHidden(session, bodyResolveComponents)) {
this.add(classifierSymbol) if (result == classifierSymbol) return@processClassifiersByName
if (result == null) {
result = classifierSymbol
} else {
isAmbiguousResult = true
}
} }
} }
}.singleOrNull() return result.takeUnless { isAmbiguousResult }
}
private fun FirDeclaration.isInvisibleOrHidden(session: FirSession, bodyResolveComponents: BodyResolveComponents): Boolean { private fun FirDeclaration.isInvisibleOrHidden(session: FirSession, bodyResolveComponents: BodyResolveComponents): Boolean {
if (this is FirMemberDeclaration) { if (this is FirMemberDeclaration) {