From 462204170617e7ec3e9b4daebbceb07099b50027 Mon Sep 17 00:00:00 2001 From: Pavel Kirpichenkov Date: Fri, 22 Nov 2019 12:35:49 +0300 Subject: [PATCH] Update box test for unsigned to signed conversions Updated test checks, that large unsigned numbers are converted to corresponding negative signed numbers properly. Using unsinged constants instead of signed in test allows to remove supressed OI error as well as use test with NI. --- .../signedToUnsignedLiteralConversion.kt | 27 -------------- .../unsignedToSignedConversion.kt | 36 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 5 +++ .../LightAnalysisModeTestGenerated.java | 5 +++ .../ir/FirBlackBoxCodegenTestGenerated.java | 5 +++ .../ir/IrBlackBoxCodegenTestGenerated.java | 5 +++ .../IrJsCodegenBoxTestGenerated.java | 5 +++ .../semantics/JsCodegenBoxTestGenerated.java | 5 +++ 8 files changed, 66 insertions(+), 27 deletions(-) delete mode 100644 compiler/testData/codegen/box/unsignedTypes/signedToUnsignedLiteralConversion.kt create mode 100644 compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt diff --git a/compiler/testData/codegen/box/unsignedTypes/signedToUnsignedLiteralConversion.kt b/compiler/testData/codegen/box/unsignedTypes/signedToUnsignedLiteralConversion.kt deleted file mode 100644 index 09df90f7c4e..00000000000 --- a/compiler/testData/codegen/box/unsignedTypes/signedToUnsignedLiteralConversion.kt +++ /dev/null @@ -1,27 +0,0 @@ -// WITH_RUNTIME -// TARGET_BACKEND: NATIVE -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND: JS_IR - -@file:Suppress("SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED") - -fun takeUByte(u: UByte) = u.toByte() -fun takeUShort(u: UShort) = u.toShort() -fun takeUInt(u: UInt) = u.toInt() -fun takeULong(u: ULong) = u.toLong() - -fun box(): String { - val b = takeUByte(200 + 55) - if (b != (-1).toByte()) return "Fail 1: $b" - - val s = takeUShort(123) - if (s != 123.toShort()) return "Fail 2: $s" - - val i = takeUInt(0xFFFF_FFFF) - if (i != -1) return "Fail 3: $i" - - val l = takeULong(0xFFFF_FFFF_FFFF) - if (l != 0xFFFF_FFFF_FFFFL) return "Fail 4: $l" - - return "OK" -} diff --git a/compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt b/compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt new file mode 100644 index 00000000000..a21c88ed239 --- /dev/null +++ b/compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt @@ -0,0 +1,36 @@ +// WITH_RUNTIME +// IGNORE_BACKEND: JS_IR +// IGNORE_BACKEND_FIR: JVM_IR + +fun takeUByte(u: UByte) = u.toByte() +fun takeUShort(u: UShort) = u.toShort() +fun takeUInt(u: UInt) = u.toInt() +fun takeULong(u: ULong) = u.toLong() + +fun box(): String { + val b1 = takeUByte(127u) + if (b1 != 127.toByte()) return "Fail byte: $b1" + + val b2 = takeUByte(255u) + if (b2 != (-1).toByte()) return "Fail byte negative: $b2" + + val s1 = takeUShort(0x7FFFu) + if (s1 != 0x7FFF.toShort()) return "Fail short: $s1" + + val s2 = takeUShort(0xFFFFu) + if (s2 != (-1).toShort()) return "Fail short negative: $s2" + + val i1 = takeUInt(0x7FFF_FFFFu) + if (i1 != 0x7FFF_FFFF) return "Fail int: $i1" + + val i2 = takeUInt(0xFFFF_FFFFu) + if (i2 != -1) return "Fail int negative: $i2" + + val l1 = takeULong(0x7FFF_FFFF_FFFF_FFFFu) + if (l1 != 0x7FFF_FFFF_FFFF_FFFF) return "Fail long: $l1" + + val l2 = takeULong(0xFFFF_FFFF_FFFF_FFFFu) + if (l2 != (-1).toLong()) return "Fail long negative: $l2" + + return "OK" +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index e58979ea11f..6432c3a569e 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -27756,6 +27756,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedRangeIterator.kt"); } + @TestMetadata("unsignedToSignedConversion.kt") + public void testUnsignedToSignedConversion() throws Exception { + runTest("compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt"); + } + @TestMetadata("unsignedTypePrefixIncrementDecrementBoxing.kt") public void testUnsignedTypePrefixIncrementDecrementBoxing() throws Exception { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedTypePrefixIncrementDecrementBoxing.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 7f9bda635f5..8388dfa6785 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -26573,6 +26573,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/unsignedTypes/unsignedRangeIterator.kt"); } + @TestMetadata("unsignedToSignedConversion.kt") + public void testUnsignedToSignedConversion() throws Exception { + runTest("compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt"); + } + @TestMetadata("unsignedTypePrefixIncrementDecrementBoxing.kt") public void testUnsignedTypePrefixIncrementDecrementBoxing() throws Exception { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedTypePrefixIncrementDecrementBoxing.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index 5698ea5776a..99ae27f3955 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -26260,6 +26260,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/unsignedTypes/unsignedRangeIterator.kt"); } + @TestMetadata("unsignedToSignedConversion.kt") + public void testUnsignedToSignedConversion() throws Exception { + runTest("compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt"); + } + @TestMetadata("unsignedTypePrefixIncrementDecrementBoxing.kt") public void testUnsignedTypePrefixIncrementDecrementBoxing() throws Exception { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedTypePrefixIncrementDecrementBoxing.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 5320ace7ca8..8248ae085f2 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -26260,6 +26260,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/unsignedTypes/unsignedRangeIterator.kt"); } + @TestMetadata("unsignedToSignedConversion.kt") + public void testUnsignedToSignedConversion() throws Exception { + runTest("compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt"); + } + @TestMetadata("unsignedTypePrefixIncrementDecrementBoxing.kt") public void testUnsignedTypePrefixIncrementDecrementBoxing() throws Exception { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedTypePrefixIncrementDecrementBoxing.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index cb935863069..19d1115da4e 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -21641,6 +21641,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedRangeIterator.kt"); } + @TestMetadata("unsignedToSignedConversion.kt") + public void testUnsignedToSignedConversion() throws Exception { + runTest("compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt"); + } + @TestMetadata("unsignedTypePrefixIncrementDecrementBoxing.kt") public void testUnsignedTypePrefixIncrementDecrementBoxing() throws Exception { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedTypePrefixIncrementDecrementBoxing.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 9330cc95bc2..6607c75b072 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -22771,6 +22771,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedRangeIterator.kt"); } + @TestMetadata("unsignedToSignedConversion.kt") + public void testUnsignedToSignedConversion() throws Exception { + runTest("compiler/testData/codegen/box/unsignedTypes/unsignedToSignedConversion.kt"); + } + @TestMetadata("unsignedTypePrefixIncrementDecrementBoxing.kt") public void testUnsignedTypePrefixIncrementDecrementBoxing() throws Exception { runTest("compiler/testData/codegen/box/unsignedTypes/unsignedTypePrefixIncrementDecrementBoxing.kt");