diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/utils/MetadataDeclarationsComparator.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/utils/MetadataDeclarationsComparator.kt index a2cc9a88c6f..b073ecb2d76 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/utils/MetadataDeclarationsComparator.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/utils/MetadataDeclarationsComparator.kt @@ -11,8 +11,14 @@ import org.jetbrains.kotlin.descriptors.commonizer.utils.KNI_BRIDGE_FUNCTION_PRE import java.util.* import kotlin.reflect.KProperty0 +/** + * Compares two metadata modules ([KlibModuleMetadata]). Returns [Result], which may hold a list + * of found [Mismatch]s. + * + * The entry point is [MetadataDeclarationsComparator.Companion.compareModules] function. + */ // TODO: extract to kotlinx-metadata-klib library? -class MetadataDeclarationsComparator(private val config: Config = Config.Default) { +class MetadataDeclarationsComparator private constructor(private val config: Config) { interface Config { val rootPathElement: String @@ -82,7 +88,7 @@ class MetadataDeclarationsComparator(private val config: Config = Config.Default private fun toResult() = if (mismatches.isEmpty()) Result.Success else Result.Failure(mismatches) - fun compare( + private fun compareModules( metadataA: KlibModuleMetadata, metadataB: KlibModuleMetadata ): Result { @@ -748,6 +754,12 @@ class MetadataDeclarationsComparator(private val config: Config = Config.Default } companion object { + fun compare( + metadataA: KlibModuleMetadata, + metadataB: KlibModuleMetadata, + config: Config = Config.Default + ): Result = MetadataDeclarationsComparator(config).compareModules(metadataA, metadataB) + private val VISIBILITY_FLAGS: Array> = arrayOf( Flag.Common::IS_INTERNAL, Flag.Common::IS_PRIVATE, diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/assertions.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/assertions.kt index fbe7dcf82c4..492295000b6 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/assertions.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/assertions.kt @@ -26,7 +26,7 @@ fun assertModulesAreEqual(reference: SerializedMetadata, generated: SerializedMe val referenceModule = with(reference) { KlibModuleMetadata.read(SerializedMetadataLibraryProvider(module, fragments, fragmentNames)) } val generatedModule = with(generated) { KlibModuleMetadata.read(SerializedMetadataLibraryProvider(module, fragments, fragmentNames)) } - when (val result = MetadataDeclarationsComparator().compare(referenceModule, generatedModule)) { + when (val result = MetadataDeclarationsComparator.compare(referenceModule, generatedModule)) { is Result.Success -> Unit is Result.Failure -> { val mismatches = result.mismatches