diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt index fe0d69e3845..8f83af7effb 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt @@ -264,25 +264,23 @@ private class FirShorteningContext(val analysisSession: KtFirAnalysisSession) { class ClassifierCandidate(val scope: FirScope, val availableSymbol: AvailableSymbol) - fun findFirstClassifierInScopesByName(positionScopes: List, targetClassName: Name): AvailableSymbol? { - for (scope in positionScopes) { - val classifierSymbol = scope.findFirstClassifierByName(targetClassName) ?: continue - val classifierLookupTag = classifierSymbol.toLookupTag() as? ConeClassLikeLookupTag ?: continue - - return AvailableSymbol(classifierLookupTag.classId, ImportKind.fromScope(scope)) - } - - return null - } + fun findFirstClassifierInScopesByName(positionScopes: List, targetClassName: Name): AvailableSymbol? = + positionScopes.firstNotNullOfOrNull { scope -> findFirstClassifierSymbolByName(scope, targetClassName) } fun findClassifiersInScopesByName(scopes: List, targetClassName: Name): List = scopes.mapNotNull { scope -> - val classifierSymbol = scope.findFirstClassifierByName(targetClassName) ?: return@mapNotNull null - val classifierLookupTag = classifierSymbol.toLookupTag() as? ConeClassLikeLookupTag ?: return@mapNotNull null + val classifierSymbol = findFirstClassifierSymbolByName(scope, targetClassName) ?: return@mapNotNull null - ClassifierCandidate(scope, AvailableSymbol(classifierLookupTag.classId, ImportKind.fromScope(scope))) + ClassifierCandidate(scope, classifierSymbol) } + private fun findFirstClassifierSymbolByName(scope: FirScope, targetClassName: Name): AvailableSymbol? { + val classifierSymbol = scope.findFirstClassifierByName(targetClassName) ?: return null + val classifierLookupTag = classifierSymbol.toLookupTag() as? ConeClassLikeLookupTag ?: return null + + return AvailableSymbol(classifierLookupTag.classId, ImportKind.fromScope(scope)) + } + fun findFunctionsInScopes(scopes: List, name: Name): List>> { return scopes.flatMap { scope -> val importKind = ImportKind.fromScope(scope)