From 3c03e388d268ffb60f3a00c2b8ccd278ae6b18cc Mon Sep 17 00:00:00 2001 From: Timofey Solonin Date: Thu, 21 Dec 2023 20:51:20 +0100 Subject: [PATCH] Record erroneous UnsafeNumber commonization behavior ^KT-64376 --- ...icalOptimisticNumbersTypeCommonizerTest.kt | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) 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