[IR] Simplify ExpectActualCollector, remove nesting

This commit is contained in:
Ivan Kochurkin
2023-02-10 16:20:45 +01:00
committed by Space Team
parent 010c7acc3a
commit a54b56d74e
@@ -23,7 +23,7 @@ internal class ExpectActualCollector(private val mainFragment: IrModuleFragment,
val result = mutableMapOf<IrSymbol, IrSymbol>() val result = mutableMapOf<IrSymbol, IrSymbol>()
// Collect and link classifiers at first to make it possible to expand type aliases on the callables linking // Collect and link classifiers at first to make it possible to expand type aliases on the callables linking
val (allActualDeclarations, typeAliasMap) = result.appendExpectActualClassifiersMap() val (allActualDeclarations, typeAliasMap) = result.appendExpectActualClassifiersMap()
result.appendExpectActualCallablesMap(allActualDeclarations, typeAliasMap, dependentFragments) result.appendExpectActualCallablesMap(allActualDeclarations, typeAliasMap)
return result to typeAliasMap return result to typeAliasMap
} }
@@ -44,7 +44,19 @@ internal class ExpectActualCollector(private val mainFragment: IrModuleFragment,
return allActualDeclarations to typeAliasMap return allActualDeclarations to typeAliasMap
} }
class ActualClassifiersCollector( private fun MutableMap<IrSymbol, IrSymbol>.appendExpectActualCallablesMap(
allActualDeclarations: Set<IrDeclaration>,
typeAliasMap: Map<FqName, FqName>
) {
val actualMembers = mutableMapOf<String, IrDeclarationBase>()
collectActualCallables(this, actualMembers, allActualDeclarations)
val collector = CallablesLinkCollector(this, actualMembers, typeAliasMap)
dependentFragments.forEach { collector.visitModuleFragment(it) }
}
}
private class ActualClassifiersCollector(
private val actualClassifiers: MutableMap<FqName, IrSymbol>, private val actualClassifiers: MutableMap<FqName, IrSymbol>,
private val allActualClassifiers: MutableSet<IrDeclaration>, private val allActualClassifiers: MutableSet<IrDeclaration>,
private val typeAliasMap: MutableMap<FqName, FqName> private val typeAliasMap: MutableMap<FqName, FqName>
@@ -92,7 +104,7 @@ internal class ExpectActualCollector(private val mainFragment: IrModuleFragment,
} }
} }
class ClassifiersLinkCollector( private class ClassifiersLinkCollector(
private val expectActualMap: MutableMap<IrSymbol, IrSymbol>, private val expectActualMap: MutableMap<IrSymbol, IrSymbol>,
private val actualClassifiers: Map<FqName, IrSymbol> private val actualClassifiers: Map<FqName, IrSymbol>
) : IrElementVisitorVoid { ) : IrElementVisitorVoid {
@@ -126,18 +138,6 @@ internal class ExpectActualCollector(private val mainFragment: IrModuleFragment,
} }
} }
private fun MutableMap<IrSymbol, IrSymbol>.appendExpectActualCallablesMap(
allActualDeclarations: Set<IrDeclaration>,
typeAliasMap: Map<FqName, FqName>,
dependentFragments: List<IrModuleFragment>
) {
val actualMembers = mutableMapOf<String, IrDeclarationBase>()
collectActualCallables(this, actualMembers, allActualDeclarations)
val collector = CallablesLinkCollector(this, actualMembers, typeAliasMap)
dependentFragments.forEach { collector.visitModuleFragment(it) }
}
private fun collectActualCallables( private fun collectActualCallables(
expectActualMap: MutableMap<IrSymbol, IrSymbol>, expectActualMap: MutableMap<IrSymbol, IrSymbol>,
actualMembers: MutableMap<String, IrDeclarationBase>, actualMembers: MutableMap<String, IrDeclarationBase>,
@@ -162,7 +162,7 @@ internal class ExpectActualCollector(private val mainFragment: IrModuleFragment,
} }
} }
class CallablesLinkCollector( private class CallablesLinkCollector(
private val expectActualMap: MutableMap<IrSymbol, IrSymbol>, private val expectActualMap: MutableMap<IrSymbol, IrSymbol>,
private val actualMembers: Map<String, IrDeclarationBase>, private val actualMembers: Map<String, IrDeclarationBase>,
private val typeAliasMap: Map<FqName, FqName> private val typeAliasMap: Map<FqName, FqName>
@@ -190,4 +190,3 @@ internal class ExpectActualCollector(private val mainFragment: IrModuleFragment,
element.acceptChildrenVoid(this) element.acceptChildrenVoid(this)
} }
} }
}