[KLIB tool] Respect '-signature-version' in 'dump-metadata' and 'dump-ir' commands
This commit is contained in:
committed by
Space Team
parent
c34e334550
commit
57e004e2b0
@@ -273,11 +273,16 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
||||
}
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
fun dumpIr(output: Appendable, printSignatures: Boolean) {
|
||||
fun dumpIr(output: Appendable, printSignatures: Boolean, signatureVersion: KotlinIrSignatureVersion?) {
|
||||
val module = loadModule()
|
||||
val library = module.kotlinLibrary
|
||||
checkLibraryHasIr(library)
|
||||
|
||||
if (signatureVersion != null && signatureVersion != KotlinIrSignatureVersion.V2) {
|
||||
// TODO: support passing any signature version through `DumpIrTreeOptions`, KT-62828
|
||||
logWarning("using a non-default signature version in \"dump-ir\" is not supported yet")
|
||||
}
|
||||
|
||||
val versionSpec = LanguageVersionSettingsImpl(currentLanguageVersion, currentApiVersion)
|
||||
val idSignaturer = KonanIdSignaturer(KonanManglerDesc)
|
||||
val symbolTable = SymbolTable(idSignaturer, IrFactoryImpl)
|
||||
@@ -296,15 +301,15 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) {
|
||||
output.append(irFragment.dump(DumpIrTreeOptions(printSignatures = printSignatures)))
|
||||
}
|
||||
|
||||
fun contents(output: Appendable, printSignatures: Boolean) {
|
||||
fun contents(output: Appendable, printSignatures: Boolean, signatureVersion: KotlinIrSignatureVersion?) {
|
||||
logWarning("\"contents\" has been renamed to \"dump-metadata\". Please, use new command name.")
|
||||
dumpMetadata(output, printSignatures)
|
||||
dumpMetadata(output, printSignatures, signatureVersion)
|
||||
}
|
||||
|
||||
fun dumpMetadata(output: Appendable, printSignatures: Boolean) {
|
||||
fun dumpMetadata(output: Appendable, printSignatures: Boolean, signatureVersion: KotlinIrSignatureVersion?) {
|
||||
val module = loadModule()
|
||||
val signatureRenderer = if (printSignatures)
|
||||
DefaultKlibSignatureRenderer(KotlinIrSignatureVersion.V1, "// Signature: ") // TODO: use the version from `-signature-version`
|
||||
DefaultKlibSignatureRenderer(signatureVersion, "// Signature: ")
|
||||
else
|
||||
KlibSignatureRenderer.NO_SIGNATURE
|
||||
val printer = DeclarationPrinter(output, DefaultDeclarationHeaderRenderer, signatureRenderer)
|
||||
@@ -394,11 +399,11 @@ fun main(args: Array<String>) {
|
||||
val library = Library(command.library, repository)
|
||||
|
||||
when (command.verb) {
|
||||
"dump-ir" -> library.dumpIr(System.out, printSignatures)
|
||||
"dump-ir" -> library.dumpIr(System.out, printSignatures, signatureVersion)
|
||||
"dump-ir-signatures" -> library.dumpIrSignatures(System.out, signatureVersion)
|
||||
"dump-metadata" -> library.dumpMetadata(System.out, printSignatures)
|
||||
"dump-metadata" -> library.dumpMetadata(System.out, printSignatures, signatureVersion)
|
||||
"dump-metadata-signatures" -> library.dumpMetadataSignatures(System.out, signatureVersion)
|
||||
"contents" -> library.contents(System.out, printSignatures)
|
||||
"contents" -> library.contents(System.out, printSignatures, signatureVersion)
|
||||
"signatures" -> library.signatures(System.out, signatureVersion)
|
||||
"info" -> library.info()
|
||||
"install" -> library.install()
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@ class DumpMetadataTest {
|
||||
private fun dumpMetadata(library: String, printOutput: Boolean = false, expected: () -> String) {
|
||||
val output = StringBuilder()
|
||||
val lib = Library(library, null)
|
||||
lib.dumpMetadata(output, false)
|
||||
lib.dumpMetadata(output, false, null)
|
||||
if (printOutput) {
|
||||
println(output.trim().toString())
|
||||
}
|
||||
@@ -34,7 +34,7 @@ class DumpMetadataTest {
|
||||
fun `Stdlib content should be printed without exceptions`() {
|
||||
val output = StringBuilder()
|
||||
val distributionPath = System.getProperty("konan.home")
|
||||
Library(Distribution(distributionPath).stdlib, null).dumpMetadata(output, false)
|
||||
Library(Distribution(distributionPath).stdlib, null).dumpMetadata(output, false, null)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user