[IR] Simplify usage of IrOverrideUtil

It had some copy-pasted code for counting current file on each use-site.
Now it's encapsulated in strategy.

KT-61934
This commit is contained in:
Pavel Kunyavskiy
2023-09-18 12:39:49 +02:00
committed by Space Team
parent 2b8b6a2b21
commit 9fd057d7c3
4 changed files with 32 additions and 29 deletions
@@ -86,6 +86,11 @@ private class IrLinkerFakeOverrideBuilderStrategy(
friendModules = friendModules,
unimplementedOverridesStrategy = unimplementedOverridesStrategy
) {
override fun inFile(file: IrFile?, block: () -> Unit) {
fakeOverrideDeclarationTable.inFile(file, block)
}
override fun linkFunctionFakeOverride(function: IrFunctionWithLateBinding, manglerCompatibleMode: Boolean) {
val (signature, symbol) = computeFunctionFakeOverrideSymbol(function, manglerCompatibleMode)
@@ -286,19 +291,11 @@ class IrLinkerFakeOverrideProvider(
if (!platformSpecificClassFilter.needToConstructFakeOverrides(clazz)) return false
buildFakeOverridesForSingleClass(clazz, compatibilityMode)
irOverridingUtil.buildFakeOverridesForClass(clazz, compatibilityMode.oldSignatures)
return true
}
fun buildFakeOverridesForSingleClass(clazz: IrClass, compatibilityMode: CompatibilityMode) {
fakeOverrideDeclarationTable.run {
inFile(clazz.fileOrNull) {
irOverridingUtil.buildFakeOverridesForClass(clazz, compatibilityMode.oldSignatures)
}
}
}
fun provideFakeOverrides(klass: IrClass, compatibilityMode: CompatibilityMode) {
buildFakeOverrideChainsForClass(klass, compatibilityMode)
haveFakeOverrides.add(klass)