From 209dd837dfae2cf272faf3772cc97ab796057529 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Tue, 31 Jul 2018 15:08:36 +0200 Subject: [PATCH] Get rid of 'externalPackageFragments' and 'dependencyModules' in IrModuleFragment --- .../kotlin/ir/util/IrUnboundSymbolReplacer.kt | 33 ------------------- .../org/jetbrains/kotlin/ir/util/IrUtils2.kt | 5 --- 2 files changed, 38 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUnboundSymbolReplacer.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUnboundSymbolReplacer.kt index ff0b4a1d227..0e9cf3a0d4a 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUnboundSymbolReplacer.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUnboundSymbolReplacer.kt @@ -59,44 +59,11 @@ internal fun IrModuleFragment.replaceUnboundSymbols(context: Context) { symbolTable = context.psi2IrGeneratorContext.symbolTable, irBuiltIns = context.irBuiltIns ).generateUnboundSymbolsAsDependencies(this) - - // Merge duplicated module and package declarations: - this.acceptVoid(object : IrElementVisitorVoid { - override fun visitElement(element: IrElement) {} - - override fun visitModuleFragment(declaration: IrModuleFragment) { - declaration.dependencyModules.forEach { it.acceptVoid(this) } - - // TODO: toSet added to avoid duplicates introduced in 8094cb7dc5506895466b4912a44e9e7f99a14902. - val dependencyModules = declaration.dependencyModules.toSet().groupBy { it.descriptor }.map { (_, fragments) -> - fragments.reduce { firstModule, nextModule -> - firstModule.apply { - mergeFrom(nextModule) - } - } - } - - declaration.dependencyModules.clear() - declaration.dependencyModules.addAll(dependencyModules) - } - - }) } private fun IrModuleFragment.mergeFrom(other: IrModuleFragment): Unit { assert(this.files.isEmpty()) assert(other.files.isEmpty()) - - // TODO: toSet added to avoid duplicates introduced in 8094cb7dc5506895466b4912a44e9e7f99a14902. - val thisPackages = this.externalPackageFragments.toSet().groupBy { it.packageFragmentDescriptor } - other.externalPackageFragments.forEach { - val thisPackage = thisPackages[it.packageFragmentDescriptor]?.single() - if (thisPackage == null) { - this.externalPackageFragments.add(it) - } else { - thisPackage.addChildren(it.declarations) - } - } } private class DeclarationSymbolCollector : IrElementVisitorVoid { diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt index 85587c79e5f..f763bc7152d 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/ir/util/IrUtils2.kt @@ -410,11 +410,6 @@ object SetDeclarationsParentVisitor : IrElementVisitor - dependencyModule.externalPackageFragments.forEach { - it.accept(CheckDeclarationParentsVisitor, null) - } - } } object CheckDeclarationParentsVisitor : IrElementVisitor {