diff --git a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt index 6a757908b05..f10cb923c6f 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt @@ -940,4 +940,41 @@ class HierarchicalOptimisticNumbersTypeCommonizerTest : AbstractInlineSourcesCom """.trimIndent() ) } + + fun `test KT-64376 - UnsafeNumber annotation - isn't applied to a commonization type that isn't a number - when commonizing hierarchically`() { + val result = commonize { + outputTarget("(a, b)", "(a, b, c)") + setting(OptimisticNumberCommonizationEnabledKey, true) + registerFakeStdlibIntegersDependency("(a, b)", "(a, b, c)") + simpleSingleSourceTarget("a", """ + typealias X = Short + fun foo(x: X): X = x + """.trimIndent()) + simpleSingleSourceTarget("b", """ + typealias X = Int + fun foo(x: X): X = x + """.trimIndent()) + simpleSingleSourceTarget("c", """ + typealias X = Any + fun foo(x: X): X = x + """.trimIndent()) + } + + result.assertCommonized( + "(a, b)", """ + @UnsafeNumber(["a: kotlin.Short", "b: kotlin.Int"]) + typealias X = Short + @UnsafeNumber(["a: kotlin.Short", "b: kotlin.Int"]) + expect fun foo(x: X): X + """.trimIndent() + ) + + result.assertCommonized( + "(a, b, c)", """ + expect class X + @UnsafeNumber(["a: kotlin.Short", "b: kotlin.Int", "c: kotlin.Any"]) + expect fun foo(x: X): X + """.trimIndent() + ) + } } \ No newline at end of file