[FIR2IR] Slightly refactor ConversionUtils

This commit is contained in:
Mikhail Glukhikh
2020-04-23 13:43:17 +03:00
parent 09f9e767ed
commit 2805108061
@@ -213,36 +213,29 @@ private val simpleDeclarationCollector: (FirDeclaration, MutableMap<Name, FirDec
} }
} }
internal fun FirClass<*>.collectCallableNamesFromSupertypes( internal fun FirClass<*>.collectCallableNamesFromSupertypes(session: FirSession): Set<Name> {
session: FirSession, val result = mutableMapOf<Name, FirDeclaration>()
result: MutableMap<Name, FirDeclaration> = mutableMapOf(),
record: (FirDeclaration, MutableMap<Name, FirDeclaration>) -> Unit = simpleDeclarationCollector
): Set<Name> {
for (superTypeRef in superTypeRefs) { for (superTypeRef in superTypeRefs) {
superTypeRef.collectDeclarationsFromThisAndSupertypes(session, result, record) superTypeRef.collectDeclarationsFromThisAndSupertypes(session, result, simpleDeclarationCollector)
} }
return result.keys return result.keys
} }
internal fun FirClass<*>.collectContributedFunctionsFromSupertypes( internal fun FirClass<*>.collectContributedFunctionsFromSupertypes(
session: FirSession, session: FirSession,
result: MutableMap<Name, FirDeclaration> = mutableMapOf(), record: (FirDeclaration, MutableMap<Name, FirDeclaration>) -> Unit
record: (FirDeclaration, MutableMap<Name, FirDeclaration>) -> Unit = { declaration, map ->
if (declaration is FirSimpleFunction && declaration.body != null) {
map.putIfAbsent(declaration.name, declaration)
}
}
): Map<Name, FirDeclaration> { ): Map<Name, FirDeclaration> {
val result = mutableMapOf<Name, FirDeclaration>()
for (superTypeRef in superTypeRefs) { for (superTypeRef in superTypeRefs) {
superTypeRef.collectDeclarationsFromThisAndSupertypes(session, result, record) superTypeRef.collectDeclarationsFromThisAndSupertypes(session, result, record)
} }
return result return result
} }
fun FirClass<*>.collectDeclarationsFromSupertypes( private fun FirClass<*>.collectDeclarationsFromSupertypes(
session: FirSession, session: FirSession,
result: MutableMap<Name, FirDeclaration> = mutableMapOf(), result: MutableMap<Name, FirDeclaration>,
record: (FirDeclaration, MutableMap<Name, FirDeclaration>) -> Unit = simpleDeclarationCollector record: (FirDeclaration, MutableMap<Name, FirDeclaration>) -> Unit
): Map<Name, FirDeclaration> { ): Map<Name, FirDeclaration> {
for (superTypeRef in superTypeRefs) { for (superTypeRef in superTypeRefs) {
superTypeRef.collectDeclarationsFromThisAndSupertypes(session, result, record) superTypeRef.collectDeclarationsFromThisAndSupertypes(session, result, record)
@@ -252,8 +245,8 @@ fun FirClass<*>.collectDeclarationsFromSupertypes(
private fun FirTypeRef.collectDeclarationsFromThisAndSupertypes( private fun FirTypeRef.collectDeclarationsFromThisAndSupertypes(
session: FirSession, session: FirSession,
result: MutableMap<Name, FirDeclaration> = mutableMapOf(), result: MutableMap<Name, FirDeclaration>,
record: (FirDeclaration, MutableMap<Name, FirDeclaration>) -> Unit = simpleDeclarationCollector record: (FirDeclaration, MutableMap<Name, FirDeclaration>) -> Unit
): Map<Name, FirDeclaration> { ): Map<Name, FirDeclaration> {
if (this is FirResolvedTypeRef) { if (this is FirResolvedTypeRef) {
val superType = type val superType = type