Postpone conversions from signed constants to unsigned ones

#KT-26071 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2018-08-28 16:25:29 +03:00
parent d785b7e4c5
commit daadba0927
7 changed files with 26 additions and 16 deletions
@@ -13,5 +13,5 @@ fun foo() {
takeUByte(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>id(1)<!>)
1 <!NONE_APPLICABLE!>+<!> 1u
(1u + 1) checkType { _<UInt>() }
(1u + <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>) checkType { _<UInt>() }
}
@@ -25,7 +25,7 @@ fun test() {
foo(1) checkType { _<Int>() }
foo(1u) checkType { _<String>() }
foo(2147483648) checkType { _<String>() }
foo(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>2147483648<!>) checkType { _<String>() }
foo(<!INTEGER_OVERFLOW!>2147483647 + 1<!>) checkType { _<Int>() }
fooByte(1) checkType { _<Int>() }
@@ -10,30 +10,30 @@ fun takeUBytes(vararg u: UByte) {}
fun takeNullableUInt(u: UInt?) {}
fun test() {
takeUInt(1 + 2)
takeUInt(1.plus(2))
takeNullableUInt(4)
takeUInt(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1 + 2<!>)
takeUInt(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1.plus(2)<!>)
takeNullableUInt(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>4<!>)
takeUInt(<!TYPE_MISMATCH!>Int.MAX_VALUE * 2L<!>)
takeUInt(<!TYPE_MISMATCH!>-1<!>)
takeUInt(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED, TYPE_MISMATCH!>-1<!>)
takeUInt(<!TYPE_MISMATCH!>Int.MAX_VALUE * 2L + 2<!>)
takeUByte(1)
takeUByte(255)
takeUByte(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>)
takeUByte(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>255<!>)
takeUByte(<!TYPE_MISMATCH!>1.toByte()<!>)
takeUShort(1)
takeUInt(1)
takeULong(1)
takeUShort(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>)
takeUInt(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>)
takeULong(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>)
takeULong(<!INT_LITERAL_OUT_OF_RANGE!>18446744073709551615<!>)
takeULong(1844674407370955161)
takeULong(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1844674407370955161<!>)
takeULong(18446744073709551615u)
takeUInt(<!INTEGER_OVERFLOW, TYPE_MISMATCH!>Int.MAX_VALUE * 2<!>)
takeUInt(4294967294)
takeUInt(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>4294967294<!>)
takeUBytes(1, 2, 255, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>256<!>, 0, <!TYPE_MISMATCH!>-1<!>, 40 + 2)
takeUBytes(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>2<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>255<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED, CONSTANT_EXPECTED_TYPE_MISMATCH!>256<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>0<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED, TYPE_MISMATCH!>-1<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>40 + 2<!>)
takeUInt(<!TYPE_MISMATCH!>1.myPlus(2)<!>)