[KLIB tool] Rename "signatures" to "dump-metadata-signatures"
To make KLIB tool command names more uniform.
This commit is contained in:
committed by
Space Team
parent
8f141e5dc6
commit
c34e334550
+1
-1
@@ -152,7 +152,7 @@ open class CompareDistributionSignatures : DefaultTask() {
|
||||
private fun getKlibSignatures(klib: File): List<String> {
|
||||
val tool = if (HostManager.hostIsMingw) "klib.bat" else "klib"
|
||||
val klibTool = File("$newDistribution/bin/$tool").absolutePath
|
||||
val args = listOf("signatures", klib.absolutePath)
|
||||
val args = listOf("dump-metadata-signatures", klib.absolutePath, "-signature-version", "1")
|
||||
val output = runProcess(localExecutor(project), klibTool, args)
|
||||
if (output.exitCode != 0) {
|
||||
logger.error(output.stdErr)
|
||||
|
||||
+8
-3
@@ -6,9 +6,14 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.ir.util.render
|
||||
import org.jetbrains.kotlin.library.KotlinIrSignatureVersion
|
||||
|
||||
internal class DefaultKlibSignatureRenderer(private val prefix: String? = null) : KlibSignatureRenderer {
|
||||
internal class DefaultKlibSignatureRenderer(
|
||||
signatureVersion: KotlinIrSignatureVersion?,
|
||||
private val prefix: String? = null,
|
||||
) : KlibSignatureRenderer {
|
||||
private val idSignaturer = KonanIdSignaturer(KonanManglerDesc)
|
||||
private val individualSignatureRenderer = signatureVersion.getMostSuitableSignatureRenderer()
|
||||
|
||||
override fun render(descriptor: DeclarationDescriptor): String? {
|
||||
val idSignature = if (descriptor is ClassDescriptor && descriptor.kind == ClassKind.ENUM_ENTRY) {
|
||||
@@ -18,8 +23,8 @@ internal class DefaultKlibSignatureRenderer(private val prefix: String? = null)
|
||||
} ?: return null
|
||||
|
||||
return if (prefix != null)
|
||||
prefix + idSignature.render()
|
||||
prefix + idSignature.render(individualSignatureRenderer)
|
||||
else
|
||||
idSignature.render()
|
||||
idSignature.render(individualSignatureRenderer)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-6
@@ -6,16 +6,11 @@
|
||||
package org.jetbrains.kotlin.cli.klib
|
||||
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
import org.jetbrains.kotlin.ir.util.IdSignatureRenderer
|
||||
import org.jetbrains.kotlin.ir.util.render
|
||||
import org.jetbrains.kotlin.library.KotlinIrSignatureVersion
|
||||
|
||||
internal class IrSignaturesRenderer(private val output: Appendable, signatureVersion: KotlinIrSignatureVersion?) {
|
||||
private val individualSignatureRenderer = when (signatureVersion) {
|
||||
KotlinIrSignatureVersion.V1 -> IdSignatureRenderer.LEGACY
|
||||
null, KotlinIrSignatureVersion.V2 -> IdSignatureRenderer.DEFAULT
|
||||
else -> error("Unsupported signature version: ${signatureVersion.number}")
|
||||
}
|
||||
private val individualSignatureRenderer = signatureVersion.getMostSuitableSignatureRenderer()
|
||||
|
||||
fun render(signatures: IrSignaturesExtractor.Signatures) {
|
||||
header("Declared signatures: ${signatures.declaredSignatures.size}")
|
||||
|
||||
@@ -67,13 +67,13 @@ fun printUsage() {
|
||||
command is intended to be used for debugging purposes only.
|
||||
dump-ir-signatures Dump IR signatures of all public declarations in the library and all public declarations consumed
|
||||
by this library (as two separate lists). This command relies purely on the data in IR.
|
||||
signatures [DEPRECATED] Please, use "dump-ir-signatures" instead.
|
||||
Dump IR signatures of all public declarations in the library. Note, that this command renders
|
||||
dump-metadata-signatures Dump IR signatures of all public declarations in the library. Note, that this command renders
|
||||
the signatures based on the library metadata. This is different from "dump-ir-signatures",
|
||||
which renders signatures based on the IR. On practice, in most cases there is no difference
|
||||
between output of these two commands. However, if IR transforming compiler plugins
|
||||
(such as Compose) were used during compilation of the library, there would be different
|
||||
signatures for patched declarations.
|
||||
signatures [DEPRECATED] Renamed to "dump-metadata-signatures". Please, use new command name.
|
||||
dump-metadata Dump the metadata of all public declarations in the library in the form of Kotlin-alike code.
|
||||
The output of this command is intended to be used for debugging purposes only.
|
||||
contents [DEPRECATED] Renamed to "dump-metadata". Please, use new command name.
|
||||
@@ -297,23 +297,30 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
||||
}
|
||||
|
||||
fun contents(output: Appendable, printSignatures: Boolean) {
|
||||
logWarning("\"contents\" has been renamed to \"dump-metadata\"")
|
||||
logWarning("\"contents\" has been renamed to \"dump-metadata\". Please, use new command name.")
|
||||
dumpMetadata(output, printSignatures)
|
||||
}
|
||||
|
||||
fun dumpMetadata(output: Appendable, printSignatures: Boolean) {
|
||||
val module = loadModule()
|
||||
val signatureRenderer = if (printSignatures) DefaultKlibSignatureRenderer("// Signature: ") else KlibSignatureRenderer.NO_SIGNATURE
|
||||
val signatureRenderer = if (printSignatures)
|
||||
DefaultKlibSignatureRenderer(KotlinIrSignatureVersion.V1, "// Signature: ") // TODO: use the version from `-signature-version`
|
||||
else
|
||||
KlibSignatureRenderer.NO_SIGNATURE
|
||||
val printer = DeclarationPrinter(output, DefaultDeclarationHeaderRenderer, signatureRenderer)
|
||||
|
||||
printer.print(module)
|
||||
}
|
||||
|
||||
fun signatures(output: Appendable) {
|
||||
logWarning("\"signatures\" is deprecated. Please, use \"dump-ir-signatures\" instead")
|
||||
fun signatures(output: Appendable, signatureVersion: KotlinIrSignatureVersion?) {
|
||||
logWarning("\"signatures\" has been renamed to \"dump-metadata-signatures\". Please, use new command name.")
|
||||
dumpMetadataSignatures(output, signatureVersion)
|
||||
}
|
||||
|
||||
fun dumpMetadataSignatures(output: Appendable, signatureVersion: KotlinIrSignatureVersion?) {
|
||||
val module = loadModule()
|
||||
val printer = SignaturePrinter(output, DefaultKlibSignatureRenderer())
|
||||
// Don't call `checkSupportedInLibrary()` - the signatures are anyway generated on the fly.
|
||||
val printer = SignaturePrinter(output, DefaultKlibSignatureRenderer(signatureVersion))
|
||||
|
||||
printer.print(module)
|
||||
}
|
||||
@@ -390,8 +397,9 @@ fun main(args: Array<String>) {
|
||||
"dump-ir" -> library.dumpIr(System.out, printSignatures)
|
||||
"dump-ir-signatures" -> library.dumpIrSignatures(System.out, signatureVersion)
|
||||
"dump-metadata" -> library.dumpMetadata(System.out, printSignatures)
|
||||
"dump-metadata-signatures" -> library.dumpMetadataSignatures(System.out, signatureVersion)
|
||||
"contents" -> library.contents(System.out, printSignatures)
|
||||
"signatures" -> library.signatures(System.out)
|
||||
"signatures" -> library.signatures(System.out, signatureVersion)
|
||||
"info" -> library.info()
|
||||
"install" -> library.install()
|
||||
"remove" -> library.remove()
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.cli.klib
|
||||
|
||||
import org.jetbrains.kotlin.ir.util.IdSignatureRenderer
|
||||
import org.jetbrains.kotlin.library.KotlinIrSignatureVersion
|
||||
|
||||
internal fun KotlinIrSignatureVersion?.getMostSuitableSignatureRenderer() = when (this) {
|
||||
KotlinIrSignatureVersion.V1 -> IdSignatureRenderer.LEGACY
|
||||
null, KotlinIrSignatureVersion.V2 -> IdSignatureRenderer.DEFAULT
|
||||
else -> error("Unsupported signature version: $number")
|
||||
}
|
||||
Reference in New Issue
Block a user