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 d7ff7ad7c44..3d2eefde44e 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 @@ -50,8 +50,28 @@ fun assertModulesAreEqual(reference: SerializedMetadata, generated: SerializedMe } private val FILTER_OUR_ACCEPTABLE_MISMATCHES: (Mismatch) -> Boolean = { mismatch -> - when (mismatch) { - is Mismatch.MissingEntity -> mismatch.kind == "AbbreviationType" && mismatch.missingInA - is Mismatch.DifferentValues -> false + var isAcceptableMismatch = false // don't filter it out by default + + if (mismatch is Mismatch.MissingEntity) { + if (mismatch.kind == "AbbreviatedType") { + val usefulPath = mismatch.path + .dropWhile { !it.startsWith("Package ") } + .drop(1) + .joinToString(" > ") { it.substringBefore(' ') } + + if (mismatch.missingInA) { + if (usefulPath == "TypeAlias > ExpandedType") { + // extra abbreviated type appeared in commonized declaration, it's OK + isAcceptableMismatch = true + } + } else /*if (mismatch.missingInB)*/ { + if ("> ReturnType >" in usefulPath && usefulPath.endsWith("TypeProjection > Type")) { + // extra abbreviated type gone in type argument of commonized declaration, it's OK + isAcceptableMismatch = true + } + } + } } + + !isAcceptableMismatch }