[FIR] Get rid of not needed set allocation in getSingleVisibleClassifier
This commit is contained in:
committed by
Space Team
parent
4f77434ea5
commit
8dcd4efbc1
+12
-3
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user