From 48481d49bc12f43c0448962ec49c7dd230096ad2 Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Wed, 22 Jan 2025 23:33:24 -0500 Subject: [PATCH] Fix klib metadata (#89) Closes: https://github.com/cashapp/burst/issues/87 Co-authored-by: Jesse Wilson --- .../kotlin/app/cash/burst/gradle/BurstGradlePluginTest.kt | 5 +++-- .../main/kotlin/app/cash/burst/kotlin/ClassSpecializer.kt | 3 ++- .../main/kotlin/app/cash/burst/kotlin/FunctionSpecializer.kt | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/burst-gradle-plugin/src/test/kotlin/app/cash/burst/gradle/BurstGradlePluginTest.kt b/burst-gradle-plugin/src/test/kotlin/app/cash/burst/gradle/BurstGradlePluginTest.kt index 726af33..288c653 100644 --- a/burst-gradle-plugin/src/test/kotlin/app/cash/burst/gradle/BurstGradlePluginTest.kt +++ b/burst-gradle-plugin/src/test/kotlin/app/cash/burst/gradle/BurstGradlePluginTest.kt @@ -90,11 +90,12 @@ class BurstGradlePluginTest { ) val klibMetadata = klib.moduleMetadata() val coffeeTestMetadata = klibMetadata.classes.first { it.name == "CoffeeTest" } - // TODO: This expected output is wrong. It should have specializations like test_Milk etc. - // https://github.com/cashapp/burst/issues/87 assertThat(coffeeTestMetadata.functions.map { it.name }).containsExactlyInAnyOrder( "setUp", "test", + "test_Milk", + "test_None", + "test_Oat", ) } } diff --git a/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/ClassSpecializer.kt b/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/ClassSpecializer.kt index 7960878..bb0672c 100644 --- a/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/ClassSpecializer.kt +++ b/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/ClassSpecializer.kt @@ -163,7 +163,7 @@ internal class ClassSpecializer( superConstructor: IrConstructor, specialization: Specialization, ) { - original.addConstructor { + val constructor = original.addConstructor { initDefaults(original) isPrimary = false }.apply { @@ -178,5 +178,6 @@ internal class ClassSpecializer( } } } + pluginContext.metadataDeclarationRegistrar.registerConstructorAsMetadataVisible(constructor) } } diff --git a/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/FunctionSpecializer.kt b/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/FunctionSpecializer.kt index 6136cea..afa85dc 100644 --- a/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/FunctionSpecializer.kt +++ b/burst-kotlin-plugin/src/main/kotlin/app/cash/burst/kotlin/FunctionSpecializer.kt @@ -91,6 +91,7 @@ internal class FunctionSpecializer( // Add new declarations. for (function in functions) { originalParent.addDeclaration(function) + pluginContext.metadataDeclarationRegistrar.registerFunctionAsMetadataVisible(function) } }