diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.fir.kt new file mode 100644 index 00000000000..5663d51289c --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.fir.kt @@ -0,0 +1,12 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + +fun ubyte(vararg a: UByte) {} +fun ushort(vararg a: UShort) {} +fun uint(vararg a: UInt) {} +fun ulong(vararg a: ULong) {} + +class ValueParam(vararg val a: ULong) + +annotation class Ann(vararg val a: UInt) + +fun array(vararg a: UIntArray) {} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/allowedVarargsOfUnsignedTypes.kt b/compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.kt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/allowedVarargsOfUnsignedTypes.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.kt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/allowedVarargsOfUnsignedTypes.txt b/compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/allowedVarargsOfUnsignedTypes.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.fir.kt new file mode 100644 index 00000000000..cb8bae9af5b --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.fir.kt @@ -0,0 +1 @@ +val foo = UInt() diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/callDefaultConstructorOfUnsignedType.kt b/compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.kt similarity index 92% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/callDefaultConstructorOfUnsignedType.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.kt index dc90b5324df..a191c65a447 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/callDefaultConstructorOfUnsignedType.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.kt @@ -1 +1 @@ -val foo = UInt() \ No newline at end of file +val foo = UInt() diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/callDefaultConstructorOfUnsignedType.txt b/compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/callDefaultConstructorOfUnsignedType.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.fir.kt new file mode 100644 index 00000000000..41cfd451177 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.fir.kt @@ -0,0 +1,69 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER +// !WITH_NEW_INFERENCE + +// FILE: annotation.kt + +package kotlin.internal + +annotation class ImplicitIntegerCoercion + +// FILE: test.kt + +import kotlin.internal.ImplicitIntegerCoercion + +@ImplicitIntegerCoercion +const val IMPLICIT_INT = 255 + +@ImplicitIntegerCoercion +const val EXPLICIT_INT: Int = 255 + +@ImplicitIntegerCoercion +const val LONG_CONST = 255L + +@ImplicitIntegerCoercion +val NON_CONST = 255 + +@ImplicitIntegerCoercion +const val BIGGER_THAN_UBYTE = 256 + +@ImplicitIntegerCoercion +const val UINT_CONST = 42u + +fun takeUByte(@ImplicitIntegerCoercion u: UByte) {} +fun takeUShort(@ImplicitIntegerCoercion u: UShort) {} +fun takeUInt(@ImplicitIntegerCoercion u: UInt) {} +fun takeULong(@ImplicitIntegerCoercion u: ULong) {} + +fun takeUBytes(@ImplicitIntegerCoercion vararg u: UByte) {} + +fun takeLong(@ImplicitIntegerCoercion l: Long) {} + +fun takeUIntWithoutAnnotaion(u: UInt) {} + +fun takeIntWithoutAnnotation(i: Int) {} + +fun test() { + takeUByte(IMPLICIT_INT) + takeUByte(EXPLICIT_INT) + + takeUShort(IMPLICIT_INT) + takeUShort(BIGGER_THAN_UBYTE) + + takeUInt(IMPLICIT_INT) + + takeULong(IMPLICIT_INT) + + takeUBytes(IMPLICIT_INT, EXPLICIT_INT, 42u) + + takeLong(IMPLICIT_INT) + + takeIntWithoutAnnotation(IMPLICIT_INT) + + takeUIntWithoutAnnotaion(UINT_CONST) + + takeUByte(LONG_CONST) + takeUByte(NON_CONST) + takeUByte(BIGGER_THAN_UBYTE) + takeUByte(UINT_CONST) + takeUIntWithoutAnnotaion(IMPLICIT_INT) +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/conversionOfSignedToUnsigned.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.kt similarity index 92% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/conversionOfSignedToUnsigned.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.kt index 1f3f5ccb3b5..f3b19824d1e 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/conversionOfSignedToUnsigned.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.kt @@ -55,7 +55,7 @@ fun test() { takeUBytes(IMPLICIT_INT, EXPLICIT_INT, 42u) - takeLong(IMPLICIT_INT) + takeLong(IMPLICIT_INT) takeIntWithoutAnnotation(IMPLICIT_INT) @@ -63,7 +63,7 @@ fun test() { takeUByte(LONG_CONST) takeUByte(NON_CONST) - takeUByte(BIGGER_THAN_UBYTE) + takeUByte(BIGGER_THAN_UBYTE) takeUByte(UINT_CONST) takeUIntWithoutAnnotaion(IMPLICIT_INT) -} \ No newline at end of file +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/conversionOfSignedToUnsigned.txt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/conversionOfSignedToUnsigned.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.fir.kt new file mode 100644 index 00000000000..7b1e8c134a6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.fir.kt @@ -0,0 +1,20 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE +// !CHECK_TYPE +// !WITH_NEW_INFERENCE + +// Here we mostly trying to fix behaviour in order to track changes in inference rules for unsigned types later + +fun id(x: T): T = x +fun select(x: K, y: K): K = TODO() + +fun takeUByte(u: UByte) {} + +fun foo() { + select(1, 1u) checkType { _>() } + takeUByte(id(1)) + + 1 + 1u + (1u + 1) checkType { _() } + + id(1) +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt similarity index 69% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt index 14a18f20ef5..021a76d7ccc 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt @@ -10,11 +10,11 @@ fun select(x: K, y: K): K = TODO() fun takeUByte(u: UByte) {} fun foo() { - select(1, 1u) checkType { _>() } - takeUByte(id(1)) + select(1, 1u) checkType { _>() } + takeUByte(id(1)) 1 + 1u (1u + 1) checkType { _() } id(1) -} \ No newline at end of file +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.txt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.fir.kt new file mode 100644 index 00000000000..e99e8a597cc --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.fir.kt @@ -0,0 +1,14 @@ +fun UInt.fUInt() {} +fun UByte.fUByte() {} +fun UShort.fUShort() {} +fun ULong.fULong() {} + +fun test() { + 1.fUInt() + 1.fUByte() + 1.fUShort() + 1.fULong() + + 3000000000 until 3000000004UL + 0 until 10u +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.kt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.kt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.txt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.fir.kt new file mode 100644 index 00000000000..4b5009d5183 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.fir.kt @@ -0,0 +1,35 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER +// !CHECK_TYPE + +fun foo(x: Int): Int = 0 + +fun foo(x: UInt): String = "" +fun foo(x: UByte): String = "" +fun foo(x: UShort): String = "" +fun foo(x: ULong): String = "" + +fun fooByte(x: Byte): Int = 0 +fun fooByte(x: UByte): String = "" + +fun fooShort(x: Short): Int = 0 +fun fooShort(x: UShort): String = "" + +fun fooLong(x: Long): Int = 0 +fun fooLong(x: ULong): String = "" + +fun test() { + foo(1) checkType { _() } + foo(1u) checkType { _() } + + foo(2147483648) checkType { _() } + foo(2147483647 + 1) checkType { _() } + + fooByte(1) checkType { _() } + fooByte(1u) checkType { _() } + + fooShort(1) checkType { _() } + fooShort(1u) checkType { _() } + + fooLong(1) checkType { _() } + fooLong(1u) checkType { _() } +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt similarity index 99% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt index 7b625e5b14d..4d6a348c974 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt @@ -32,4 +32,4 @@ fun test() { fooLong(1) checkType { _() } fooLong(1u) checkType { _() } -} \ No newline at end of file +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.txt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.fir.kt new file mode 100644 index 00000000000..0c918bf0301 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.fir.kt @@ -0,0 +1,65 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER +// !WITH_NEW_INFERENCE + +fun takeUByte(u: UByte) {} +fun takeUShort(u: UShort) {} +fun takeUInt(u: UInt) {} +fun takeULong(u: ULong) {} + +fun takeUBytes(vararg u: UByte) {} + +fun takeNullableUInt(u: UInt?) {} + +fun test() { + takeUInt(1 + 2) + takeUInt(1.plus(2)) + takeNullableUInt(4) + + takeUInt(Int.MAX_VALUE * 2L) + takeUInt(-1) + takeUInt(Int.MAX_VALUE * 2L + 2) + + takeUByte(1) + takeUByte(255) + takeUByte(1.toByte()) + + takeUShort(1) + takeUInt(1) + takeULong(1) + + takeULong(18446744073709551615) + takeULong(1844674407370955161) + takeULong(18446744073709551615u) + + takeUInt(Int.MAX_VALUE * 2) + takeUInt(4294967294) + + takeUBytes(1, 2, 255, 256, 0, -1, 40 + 2) + + takeUInt(1.myPlus(2)) + + val localVariable = 42 + takeUInt(localVariable) + + var localMutableVariable = 42 + takeUInt(localMutableVariable) + + val localNegativeVariable = -1 + takeUInt(localNegativeVariable) + + takeUInt(globalVariable) + + takeUInt(constVal) + + takeUInt(globalVariableWithGetter) +} + +val globalVariable = 10 + +const val constVal = 10 + +val globalVariableWithGetter: Int get() = 0 + +val prop: UByte = 255 + +fun Int.myPlus(other: Int): Int = this + other diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt similarity index 96% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt index 33c0b292a39..66f235dc915 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt @@ -27,7 +27,7 @@ fun test() { takeUInt(1) takeULong(1) - takeULong(18446744073709551615) + takeULong(18446744073709551615) takeULong(1844674407370955161) takeULong(18446744073709551615u) diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.txt b/compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.fir.kt new file mode 100644 index 00000000000..61cad031fbd --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.fir.kt @@ -0,0 +1,16 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + +val a0: Int = 1uL +val a1: UInt = 1uL +val a3: ULong = 1uL +val a4 = 1UL + 2UL +val a5 = -1UL + +fun takeULong(u: ULong) {} + +fun test() { + takeULong(3UL) + takeULong(1UL + 3uL) + takeULong(1u + 0uL) + takeULong(1uL + 4u) +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/explicitUnsignedLongTypeCheck.kt b/compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.kt similarity index 99% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/explicitUnsignedLongTypeCheck.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.kt index ab4586d8de2..84119d21c34 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/explicitUnsignedLongTypeCheck.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.kt @@ -13,4 +13,4 @@ fun test() { takeULong(1UL + 3uL) takeULong(1u + 0uL) takeULong(1uL + 4u) -} \ No newline at end of file +} diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/explicitUnsignedLongTypeCheck.txt b/compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/explicitUnsignedLongTypeCheck.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.fir.kt new file mode 100644 index 00000000000..f46d32673a7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.fir.kt @@ -0,0 +1,23 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE + +fun test( + ub1: UByte, ub2: UByte, + us1: UShort, us2: UShort, + ui1: UInt, ui2: UInt, + ul1: ULong, ul2: ULong +) { + val ub = ub1 === ub2 || ub1 !== ub2 + val us = us1 === us2 || us1 !== us2 + val ui = ui1 === ui2 || ui1 !== ui2 + val ul = ul1 === ul2 || ul1 !== ul2 + + val u = ub1 === ul1 + + val a1 = 1u === 2u || 1u !== 2u + val a2 = 0xFFFF_FFFF_FFFF_FFFFu === 0xFFFF_FFFF_FFFF_FFFFu + + val bu1 = 1u + val bu2 = 1u + + val c1 = bu1 === bu2 || bu1 !== bu2 +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/forbiddenEqualsOnUnsignedTypes.kt b/compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.kt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/forbiddenEqualsOnUnsignedTypes.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.kt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/forbiddenEqualsOnUnsignedTypes.txt b/compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/forbiddenEqualsOnUnsignedTypes.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.fir.kt new file mode 100644 index 00000000000..8a7cd8b6da2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.fir.kt @@ -0,0 +1,9 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE + +lateinit var a: UInt + +fun foo() { + lateinit var b: UByte + lateinit var c: UShort + lateinit var d: ULong +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/lateinitUnsignedType.kt b/compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.kt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/lateinitUnsignedType.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.kt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/lateinitUnsignedType.txt b/compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/lateinitUnsignedType.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.txt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/overloadResolutionOfBasicOperations.kt b/compiler/testData/diagnostics/tests/unsignedTypes/overloadResolutionOfBasicOperations.kt similarity index 84% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/overloadResolutionOfBasicOperations.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/overloadResolutionOfBasicOperations.kt index 5ca1f23054a..099bddfc8b4 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/overloadResolutionOfBasicOperations.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/overloadResolutionOfBasicOperations.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_VARIABLE fun test() { diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/overloadResolutionOfBasicOperations.txt b/compiler/testData/diagnostics/tests/unsignedTypes/overloadResolutionOfBasicOperations.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/overloadResolutionOfBasicOperations.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/overloadResolutionOfBasicOperations.txt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsInsideConstVals.kt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsInsideConstVals.kt similarity index 93% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsInsideConstVals.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsInsideConstVals.kt index e8adca0b21a..47dea5411c1 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsInsideConstVals.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsInsideConstVals.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL const val u0 = 1u const val u1: UByte = 2u diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsInsideConstVals.txt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsInsideConstVals.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsInsideConstVals.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsInsideConstVals.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.fir.kt new file mode 100644 index 00000000000..383f68b2f9e --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.fir.kt @@ -0,0 +1,6 @@ +// !API_VERSION: 1.2 + +val a = 0u +val b = 1uL + +fun foo(u: UInt) {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOn1_2.kt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.kt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOn1_2.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.kt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOn1_2.txt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOn1_2.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.fir.kt new file mode 100644 index 00000000000..e415c35032d --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.fir.kt @@ -0,0 +1,25 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + +const val u1: UByte = 0xFFu +const val u2: UShort = 0xFFFFu +const val u3: UInt = 0xFFFF_FFFFu +const val u4: ULong = 0xFFFF_FFFF_FFFF_FFFFu +const val u5: ULong = 18446744073709551615u + +const val u6 = 0xFFFF_FFFF_FFFF_FFFFu +const val u7 = 18446744073709551615u + +val u8: Comparable<*> = 0xFFFF_FFFF_FFFF_FFFFu + +const val u9 = 0xFFFF_FFFF_FFFF_FFFFUL + +fun takeUByte(ubyte: UByte) {} + +fun test() { + takeUByte(200u) + takeUByte(255u) + takeUByte(0xFFu) +} + +val s1: UByte = 256u +val s2 = 18446744073709551616u diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOverflowSignedBorder.kt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.kt similarity index 89% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOverflowSignedBorder.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.kt index 15fd33ffa34..2cb71bac380 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOverflowSignedBorder.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.kt @@ -22,4 +22,4 @@ fun test() { } val s1: UByte = 256u -val s2 = 18446744073709551616u \ No newline at end of file +val s2 = 18446744073709551616u diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOverflowSignedBorder.txt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOverflowSignedBorder.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.fir.kt new file mode 100644 index 00000000000..95efec7db89 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.fir.kt @@ -0,0 +1,23 @@ + +val a0: Any = 1u + +val n0: Number = 1u + +val c0: Comparable<*> = 1u +val c1: Comparable = 1u + +val u0: UInt = 1u +val u1: UInt? = 1u +val u2: UInt? = u0 +val u3: UInt? = u1 + +val i0: Int = 1u + +val m0 = -1u +val m1: UInt = -1u + +val h1 = 0xFFu +val h2: UShort = 0xFFu + +val b1 = 0b11u +val b2: UByte = 0b11u diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsTypeCheck.kt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.kt similarity index 95% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsTypeCheck.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.kt index 87cd195259a..f5522208a24 100644 --- a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsTypeCheck.kt +++ b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.kt @@ -20,4 +20,4 @@ val h1 = 0xFFu val h2: UShort = 0xFFu val b1 = 0b11u -val b2: UByte = 0b11u \ No newline at end of file +val b2: UByte = 0b11u diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsTypeCheck.txt b/compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsTypeCheck.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.fir.kt new file mode 100644 index 00000000000..9a96a3978f9 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.fir.kt @@ -0,0 +1,7 @@ + +fun ubyte(vararg a: UByte): UByteArray = a +fun ushort(vararg a: UShort): UShortArray = a +fun uint(vararg a: UInt): UIntArray = a +fun ulong(vararg a: ULong): ULongArray = a + +fun rawUInt(vararg a: UInt): IntArray = a diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/varargTypeToArrayTypeCheck.kt b/compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.kt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/varargTypeToArrayTypeCheck.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.kt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/varargTypeToArrayTypeCheck.txt b/compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/varargTypeToArrayTypeCheck.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.txt diff --git a/compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.fir.kt b/compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.fir.kt new file mode 100644 index 00000000000..144f0b45fa0 --- /dev/null +++ b/compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.fir.kt @@ -0,0 +1,4 @@ +val a1 = 1ul +val a2 = 0x1ul +val a3 = 0B1ul +val a4 = 1Ul diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/wrongLongSuffixForULong.kt b/compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.kt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/wrongLongSuffixForULong.kt rename to compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.kt diff --git a/compiler/testData/diagnostics/testsWithUnsignedTypes/wrongLongSuffixForULong.txt b/compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.txt similarity index 100% rename from compiler/testData/diagnostics/testsWithUnsignedTypes/wrongLongSuffixForULong.txt rename to compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.txt diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 2856c0b0511..d8d5700976e 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -29280,6 +29280,128 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { } } + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/unsignedTypes") + @TestDataPath("$PROJECT_ROOT") + public class UnsignedTypes extends AbstractDiagnosticTest { + @Test + public void testAllFilesPresentInUnsignedTypes() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/unsignedTypes"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); + } + + @Test + @TestMetadata("allowedVarargsOfUnsignedTypes.kt") + public void testAllowedVarargsOfUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.kt"); + } + + @Test + @TestMetadata("callDefaultConstructorOfUnsignedType.kt") + public void testCallDefaultConstructorOfUnsignedType() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.kt"); + } + + @Test + @TestMetadata("explicitUnsignedLongTypeCheck.kt") + public void testExplicitUnsignedLongTypeCheck() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.kt"); + } + + @Test + @TestMetadata("forbiddenEqualsOnUnsignedTypes.kt") + public void testForbiddenEqualsOnUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.kt"); + } + + @Test + @TestMetadata("lateinitUnsignedType.kt") + public void testLateinitUnsignedType() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.kt"); + } + + @Test + @TestMetadata("overloadResolutionOfBasicOperations.kt") + public void testOverloadResolutionOfBasicOperations() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/overloadResolutionOfBasicOperations.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsInsideConstVals.kt") + public void testUnsignedLiteralsInsideConstVals() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsInsideConstVals.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsOn1_2.kt") + public void testUnsignedLiteralsOn1_2() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsOverflowSignedBorder.kt") + public void testUnsignedLiteralsOverflowSignedBorder() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsTypeCheck.kt") + public void testUnsignedLiteralsTypeCheck() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.kt"); + } + + @Test + @TestMetadata("varargTypeToArrayTypeCheck.kt") + public void testVarargTypeToArrayTypeCheck() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.kt"); + } + + @Test + @TestMetadata("wrongLongSuffixForULong.kt") + public void testWrongLongSuffixForULong() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.kt"); + } + + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/unsignedTypes/conversions") + @TestDataPath("$PROJECT_ROOT") + public class Conversions extends AbstractDiagnosticTest { + @Test + public void testAllFilesPresentInConversions() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/unsignedTypes/conversions"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); + } + + @Test + @TestMetadata("conversionOfSignedToUnsigned.kt") + public void testConversionOfSignedToUnsigned() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.kt"); + } + + @Test + @TestMetadata("inferenceForSignedAndUnsignedTypes.kt") + public void testInferenceForSignedAndUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt"); + } + + @Test + @TestMetadata("noConversionForUnsignedTypesOnReceiver.kt") + public void testNoConversionForUnsignedTypesOnReceiver() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.kt"); + } + + @Test + @TestMetadata("overloadResolutionForSignedAndUnsignedTypes.kt") + public void testOverloadResolutionForSignedAndUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt"); + } + + @Test + @TestMetadata("signedToUnsignedConversionWithExpectedType.kt") + public void testSignedToUnsignedConversionWithExpectedType() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt"); + } + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/valueClasses") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index 8e0ed34e579..110fe12682f 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -29184,6 +29184,128 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti } } + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/unsignedTypes") + @TestDataPath("$PROJECT_ROOT") + public class UnsignedTypes extends AbstractFirDiagnosticTest { + @Test + public void testAllFilesPresentInUnsignedTypes() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/unsignedTypes"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); + } + + @Test + @TestMetadata("allowedVarargsOfUnsignedTypes.kt") + public void testAllowedVarargsOfUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/allowedVarargsOfUnsignedTypes.kt"); + } + + @Test + @TestMetadata("callDefaultConstructorOfUnsignedType.kt") + public void testCallDefaultConstructorOfUnsignedType() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/callDefaultConstructorOfUnsignedType.kt"); + } + + @Test + @TestMetadata("explicitUnsignedLongTypeCheck.kt") + public void testExplicitUnsignedLongTypeCheck() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/explicitUnsignedLongTypeCheck.kt"); + } + + @Test + @TestMetadata("forbiddenEqualsOnUnsignedTypes.kt") + public void testForbiddenEqualsOnUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/forbiddenEqualsOnUnsignedTypes.kt"); + } + + @Test + @TestMetadata("lateinitUnsignedType.kt") + public void testLateinitUnsignedType() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/lateinitUnsignedType.kt"); + } + + @Test + @TestMetadata("overloadResolutionOfBasicOperations.kt") + public void testOverloadResolutionOfBasicOperations() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/overloadResolutionOfBasicOperations.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsInsideConstVals.kt") + public void testUnsignedLiteralsInsideConstVals() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsInsideConstVals.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsOn1_2.kt") + public void testUnsignedLiteralsOn1_2() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOn1_2.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsOverflowSignedBorder.kt") + public void testUnsignedLiteralsOverflowSignedBorder() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsOverflowSignedBorder.kt"); + } + + @Test + @TestMetadata("unsignedLiteralsTypeCheck.kt") + public void testUnsignedLiteralsTypeCheck() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/unsignedLiteralsTypeCheck.kt"); + } + + @Test + @TestMetadata("varargTypeToArrayTypeCheck.kt") + public void testVarargTypeToArrayTypeCheck() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/varargTypeToArrayTypeCheck.kt"); + } + + @Test + @TestMetadata("wrongLongSuffixForULong.kt") + public void testWrongLongSuffixForULong() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/wrongLongSuffixForULong.kt"); + } + + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/unsignedTypes/conversions") + @TestDataPath("$PROJECT_ROOT") + public class Conversions extends AbstractFirDiagnosticTest { + @Test + public void testAllFilesPresentInConversions() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/unsignedTypes/conversions"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); + } + + @Test + @TestMetadata("conversionOfSignedToUnsigned.kt") + public void testConversionOfSignedToUnsigned() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/conversionOfSignedToUnsigned.kt"); + } + + @Test + @TestMetadata("inferenceForSignedAndUnsignedTypes.kt") + public void testInferenceForSignedAndUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt"); + } + + @Test + @TestMetadata("noConversionForUnsignedTypesOnReceiver.kt") + public void testNoConversionForUnsignedTypesOnReceiver() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.kt"); + } + + @Test + @TestMetadata("overloadResolutionForSignedAndUnsignedTypes.kt") + public void testOverloadResolutionForSignedAndUnsignedTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt"); + } + + @Test + @TestMetadata("signedToUnsignedConversionWithExpectedType.kt") + public void testSignedToUnsignedConversionWithExpectedType() throws Exception { + runTest("compiler/testData/diagnostics/tests/unsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt"); + } + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/valueClasses") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticTest.kt index 327321ba7b2..983f75cd296 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticTest.kt @@ -10,8 +10,8 @@ import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_STDLIB -import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.EXPLICIT_API_MODE +import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.USE_EXPERIMENTAL import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler @@ -70,5 +70,12 @@ abstract class AbstractDiagnosticTest : AbstractKotlinCompilerTest() { EXPLICIT_API_MODE with ExplicitApiMode.STRICT } } + + forTestsMatching("compiler/testData/diagnostics/tests/unsignedTypes/*") { + defaultDirectives { + USE_EXPERIMENTAL with "kotlin.ExperimentalUnsignedTypes" + +WITH_STDLIB + } + } } } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt index 1c194a73391..f44723c4ba6 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTest.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives +import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade import org.jetbrains.kotlin.test.frontend.fir.handlers.* @@ -60,7 +61,8 @@ abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() { forTestsMatching( "compiler/testData/diagnostics/testsWithStdLib/*" or - "compiler/fir/analysis-tests/testData/resolveWithStdlib/*" + "compiler/fir/analysis-tests/testData/resolveWithStdlib/*" or + "compiler/testData/diagnostics/tests/unsignedTypes/*" ) { defaultDirectives { +JvmEnvironmentConfigurationDirectives.WITH_STDLIB diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithUnsignedTypes.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithUnsignedTypes.kt deleted file mode 100644 index 99f536df4ac..00000000000 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithUnsignedTypes.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.checkers - -import org.jetbrains.kotlin.config.AnalysisFlags -import org.jetbrains.kotlin.config.ApiVersion -import org.jetbrains.kotlin.config.LanguageVersion -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.test.ConfigurationKind - -abstract class AbstractDiagnosticsWithUnsignedTypes : AbstractDiagnosticsTest() { - - override fun extractConfigurationKind(files: List): ConfigurationKind { - return ConfigurationKind.NO_KOTLIN_REFLECT - } - - override fun defaultLanguageVersionSettings(): LanguageVersionSettings = - CompilerTestLanguageVersionSettings( - DEFAULT_DIAGNOSTIC_TESTS_FEATURES, - ApiVersion.LATEST_STABLE, - LanguageVersion.LATEST_STABLE, - mapOf(AnalysisFlags.useExperimental to listOf("kotlin.ExperimentalUnsignedTypes")) - ) -} diff --git a/compiler/tests-gen/org/jetbrains/kotlin/checkers/DiagnosticsWithUnsignedTypesGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/checkers/DiagnosticsWithUnsignedTypesGenerated.java deleted file mode 100644 index b2297d7c45f..00000000000 --- a/compiler/tests-gen/org/jetbrains/kotlin/checkers/DiagnosticsWithUnsignedTypesGenerated.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.checkers; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; -import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.runner.RunWith; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@TestMetadata("compiler/testData/diagnostics/testsWithUnsignedTypes") -@TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) -public class DiagnosticsWithUnsignedTypesGenerated extends AbstractDiagnosticsWithUnsignedTypes { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); - } - - public void testAllFilesPresentInTestsWithUnsignedTypes() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithUnsignedTypes"), Pattern.compile("^(.+)\\.kt$"), null, true); - } - - @TestMetadata("allowedVarargsOfUnsignedTypes.kt") - public void testAllowedVarargsOfUnsignedTypes() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/allowedVarargsOfUnsignedTypes.kt"); - } - - @TestMetadata("callDefaultConstructorOfUnsignedType.kt") - public void testCallDefaultConstructorOfUnsignedType() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/callDefaultConstructorOfUnsignedType.kt"); - } - - @TestMetadata("explicitUnsignedLongTypeCheck.kt") - public void testExplicitUnsignedLongTypeCheck() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/explicitUnsignedLongTypeCheck.kt"); - } - - @TestMetadata("forbiddenEqualsOnUnsignedTypes.kt") - public void testForbiddenEqualsOnUnsignedTypes() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/forbiddenEqualsOnUnsignedTypes.kt"); - } - - @TestMetadata("lateinitUnsignedType.kt") - public void testLateinitUnsignedType() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/lateinitUnsignedType.kt"); - } - - @TestMetadata("overloadResolutionOfBasicOperations.kt") - public void testOverloadResolutionOfBasicOperations() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/overloadResolutionOfBasicOperations.kt"); - } - - @TestMetadata("unsignedLiteralsInsideConstVals.kt") - public void testUnsignedLiteralsInsideConstVals() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsInsideConstVals.kt"); - } - - @TestMetadata("unsignedLiteralsOn1_2.kt") - public void testUnsignedLiteralsOn1_2() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOn1_2.kt"); - } - - @TestMetadata("unsignedLiteralsOverflowSignedBorder.kt") - public void testUnsignedLiteralsOverflowSignedBorder() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsOverflowSignedBorder.kt"); - } - - @TestMetadata("unsignedLiteralsTypeCheck.kt") - public void testUnsignedLiteralsTypeCheck() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/unsignedLiteralsTypeCheck.kt"); - } - - @TestMetadata("varargTypeToArrayTypeCheck.kt") - public void testVarargTypeToArrayTypeCheck() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/varargTypeToArrayTypeCheck.kt"); - } - - @TestMetadata("wrongLongSuffixForULong.kt") - public void testWrongLongSuffixForULong() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/wrongLongSuffixForULong.kt"); - } - - @TestMetadata("compiler/testData/diagnostics/testsWithUnsignedTypes/conversions") - @TestDataPath("$PROJECT_ROOT") - @RunWith(JUnit3RunnerWithInners.class) - public static class Conversions extends AbstractDiagnosticsWithUnsignedTypes { - private void runTest(String testDataFilePath) throws Exception { - KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); - } - - public void testAllFilesPresentInConversions() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithUnsignedTypes/conversions"), Pattern.compile("^(.+)\\.kt$"), null, true); - } - - @TestMetadata("conversionOfSignedToUnsigned.kt") - public void testConversionOfSignedToUnsigned() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/conversionOfSignedToUnsigned.kt"); - } - - @TestMetadata("inferenceForSignedAndUnsignedTypes.kt") - public void testInferenceForSignedAndUnsignedTypes() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/inferenceForSignedAndUnsignedTypes.kt"); - } - - @TestMetadata("noConversionForUnsignedTypesOnReceiver.kt") - public void testNoConversionForUnsignedTypesOnReceiver() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/noConversionForUnsignedTypesOnReceiver.kt"); - } - - @TestMetadata("overloadResolutionForSignedAndUnsignedTypes.kt") - public void testOverloadResolutionForSignedAndUnsignedTypes() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/overloadResolutionForSignedAndUnsignedTypes.kt"); - } - - @TestMetadata("signedToUnsignedConversionWithExpectedType.kt") - public void testSignedToUnsignedConversionWithExpectedType() throws Exception { - runTest("compiler/testData/diagnostics/testsWithUnsignedTypes/conversions/signedToUnsignedConversionWithExpectedType.kt"); - } - } -} diff --git a/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt b/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt index 2dce736d5c3..507974bb3f7 100644 --- a/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt +++ b/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt @@ -88,10 +88,6 @@ fun main(args: Array) { model("diagnostics/testsWithJava15") } - testClass { - model("diagnostics/testsWithUnsignedTypes") - } - testClass { model("diagnostics/testsWithJvmBackend", targetBackend = TargetBackend.JVM_OLD) }