From d4585ff3ceeb888f3a66e961bb29e4b4d218afc1 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Fri, 16 Feb 2024 12:09:40 +0100 Subject: [PATCH] [KLIB tool] Refactoring. Fix visibility, add comments, drop useless code What's done: - Reduce the visibility of all entities inside the module to `internal` or `private`. Only leave `fun main()` as `public` because it's the single legal entry point. - Add comments to few classes related to "contents" command that they should be removed together with the command after 2.0. - Drop useless `DeclarationHeaderRenderer` interface. - Rename: KlibToolLinker -> KlibToolIrLinker ^KT-62340 --- .../cli/klib/DeclarationHeaderRenderer.kt | 7 -- .../kotlin/cli/klib/DeclarationPrinter.kt | 18 ++-- .../klib/DefaultDeclarationHeaderRenderer.kt | 5 +- .../org/jetbrains/kotlin/cli/klib/main.kt | 86 +++++++++---------- 4 files changed, 55 insertions(+), 61 deletions(-) delete mode 100644 kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationHeaderRenderer.kt diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationHeaderRenderer.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationHeaderRenderer.kt deleted file mode 100644 index 4523ed42b25..00000000000 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationHeaderRenderer.kt +++ /dev/null @@ -1,7 +0,0 @@ -package org.jetbrains.kotlin.cli.klib - -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor - -interface DeclarationHeaderRenderer { - fun render(descriptor: DeclarationDescriptor): String -} diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt index 0773850117b..47ca7d66df6 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DeclarationPrinter.kt @@ -7,9 +7,9 @@ import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.INTERNAL import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies import org.jetbrains.kotlin.utils.Printer +// TODO: This class is used in dumping metadata by descriptors, "contents" command. Drop it after 2.0. KT-65380 internal class DeclarationPrinter( out: Appendable, - private val headerRenderer: DeclarationHeaderRenderer, private val signatureRenderer: KlibSignatureRenderer ) { private val printer = Printer(out, 1, " ") @@ -53,14 +53,14 @@ internal class DeclarationPrinter( .filter { it.shouldBePrinted } .sortedBy { it.name } if (children.isNotEmpty()) { - printer.printWithBody(header = headerRenderer.render(descriptor)) { + printer.printWithBody(header = DefaultDeclarationHeaderRenderer.render(descriptor)) { children.forEach { it.accept(this, data) } } } } override fun visitClassDescriptor(descriptor: ClassDescriptor, data: Unit) { - val header = headerRenderer.render(descriptor) + val header = DefaultDeclarationHeaderRenderer.render(descriptor) val signature = signatureRenderer.render(descriptor) val children = descriptor.unsubstitutedMemberScope.getContributedDescriptors().filter { it.shouldBePrinted } @@ -76,19 +76,19 @@ internal class DeclarationPrinter( } override fun visitFunctionDescriptor(descriptor: FunctionDescriptor, data: Unit) { - printer.printPlain(header = headerRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) + printer.printPlain(header = DefaultDeclarationHeaderRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) } override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, data: Unit) { - printer.printPlain(header = headerRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) + printer.printPlain(header = DefaultDeclarationHeaderRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) descriptor.getter?.takeUnless { canSkipAccessor(it, descriptor) }?.let { getter -> printer.pushIndent() - printer.printPlain(header = headerRenderer.render(getter), signature = signatureRenderer.render(getter)) + printer.printPlain(header = DefaultDeclarationHeaderRenderer.render(getter), signature = signatureRenderer.render(getter)) printer.popIndent() } descriptor.setter?.takeUnless { canSkipAccessor(it, descriptor) }?.let { setter -> printer.pushIndent() - printer.printPlain(header = headerRenderer.render(setter), signature = signatureRenderer.render(setter)) + printer.printPlain(header = DefaultDeclarationHeaderRenderer.render(setter), signature = signatureRenderer.render(setter)) printer.popIndent() } } @@ -98,11 +98,11 @@ internal class DeclarationPrinter( } override fun visitConstructorDescriptor(descriptor: ConstructorDescriptor, data: Unit) { - printer.printPlain(header = headerRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) + printer.printPlain(header = DefaultDeclarationHeaderRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) } override fun visitTypeAliasDescriptor(descriptor: TypeAliasDescriptor, data: Unit) { - printer.printPlain(header = headerRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) + printer.printPlain(header = DefaultDeclarationHeaderRenderer.render(descriptor), signature = signatureRenderer.render(descriptor)) } } } diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DefaultDeclarationHeaderRenderer.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DefaultDeclarationHeaderRenderer.kt index 885bf4918e3..2c08e2b9807 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DefaultDeclarationHeaderRenderer.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/DefaultDeclarationHeaderRenderer.kt @@ -7,8 +7,9 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRendererModifier import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy -object DefaultDeclarationHeaderRenderer : DeclarationHeaderRenderer { - override fun render(descriptor: DeclarationDescriptor): String = when (descriptor) { +// TODO: This class is used in dumping metadata by descriptors, "contents" command. Drop it after 2.0. KT-65380 +internal object DefaultDeclarationHeaderRenderer { + fun render(descriptor: DeclarationDescriptor): String = when (descriptor) { is PackageFragmentDescriptor -> render(descriptor) is ClassifierDescriptorWithTypeParameters -> render(descriptor) is PropertyAccessorDescriptor -> render(descriptor) diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt index 70ab60109e0..5b6cc28d8a7 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerIr import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl import org.jetbrains.kotlin.ir.util.DumpIrTreeOptions @@ -40,7 +39,7 @@ import java.io.File import kotlin.system.exitProcess import org.jetbrains.kotlin.konan.file.File as KFile -fun printUsage() { +private fun printUsage() { println( """ Usage: klib [