Add deprecation warning about new integer operators on literals resolution

#KT-38895
This commit is contained in:
Dmitriy Novozhilov
2021-04-07 16:39:04 +03:00
committed by TeamCityServer
parent 53b6d6f767
commit 6afb905ad6
19 changed files with 411 additions and 82 deletions
@@ -10,19 +10,19 @@ fun test() {
fooInt(<!TYPE_MISMATCH!>1 - 1.toLong()<!>)
fooInt(1 - 1.toShort())
fooByte(1 - 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 - 1<!>)
fooByte(<!TYPE_MISMATCH!>1 - 1.toInt()<!>)
fooByte(<!TYPE_MISMATCH!>1 - 1.toByte()<!>)
fooByte(<!TYPE_MISMATCH!>1 - 1.toLong()<!>)
fooByte(<!TYPE_MISMATCH!>1 - 1.toShort()<!>)
fooLong(1 - 1)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 - 1<!>)
fooLong(<!TYPE_MISMATCH!>1 - 1.toInt()<!>)
fooLong(<!TYPE_MISMATCH!>1 - 1.toByte()<!>)
fooLong(1 - 1.toLong())
fooLong(<!TYPE_MISMATCH!>1 - 1.toShort()<!>)
fooShort(1 - 1)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 - 1<!>)
fooShort(<!TYPE_MISMATCH!>1 - 1.toInt()<!>)
fooShort(<!TYPE_MISMATCH!>1 - 1.toByte()<!>)
fooShort(<!TYPE_MISMATCH!>1 - 1.toLong()<!>)
@@ -28,7 +28,7 @@ const val ui2 = UInt(40 + 2)
@AnnoUB(UByte(1), ub0)
fun f0() {}
@AnnoUS(UShort(2 + 5), us0)
@AnnoUS(UShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 + 5<!>), us0)
fun f1() {}
@AnnoUI(ui0, ui1, ui2, UInt(100))
@@ -5,22 +5,22 @@ fun fooShort(p: Short) = p
fun test() {
fooInt(1 + 1)
fooByte(1 + 1)
fooLong(1 + 1)
fooShort(1 + 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 + 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 + 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 + 1<!>)
fooInt(1 * 1)
fooByte(1 * 1)
fooLong(1 * 1)
fooShort(1 * 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 * 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 * 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 * 1<!>)
fooInt(1 / 1)
fooByte(1 / 1)
fooLong(1 / 1)
fooShort(1 / 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 / 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 / 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 / 1<!>)
fooInt(1 % 1)
fooByte(1 % 1)
fooLong(1 % 1)
fooShort(1 % 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 % 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 % 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 % 1<!>)
}
@@ -5,22 +5,22 @@ fun fooShort(p: Short) = p
fun test() {
fooInt(1.plus(1))
fooByte(1.plus(1))
fooLong(1.plus(1))
fooShort(1.plus(1))
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.plus(1)<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.plus(1)<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.plus(1)<!>)
fooInt(1.times(1))
fooByte(1.times(1))
fooLong(1.times(1))
fooShort(1.times(1))
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.times(1)<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.times(1)<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.times(1)<!>)
fooInt(1.div(1))
fooByte(1.div(1))
fooLong(1.div(1))
fooShort(1.div(1))
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.div(1)<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.div(1)<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.div(1)<!>)
fooInt(1.rem(1))
fooByte(1.rem(1))
fooLong(1.rem(1))
fooShort(1.rem(1))
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.rem(1)<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.rem(1)<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.rem(1)<!>)
}
@@ -5,22 +5,22 @@ fun fooShort(p: Short) = p
fun test() {
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1)
fooByte(1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1)
fooLong(1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1)
fooShort(1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1<!>)
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1)
fooByte(1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1)
fooLong(1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1)
fooShort(1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1<!>)
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1)
fooByte(1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1)
fooLong(1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1)
fooShort(1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1<!>)
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1)
fooByte(1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1)
fooLong(1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1)
fooShort(1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1<!>)
}
@@ -6,62 +6,62 @@ abstract class C<L> {
}
fun testLongDotCall(c1: C<Long>) {
c1.takeT(1.plus(2))
c1.takeT(1.minus(2))
c1.takeT(1.times(2))
c1.takeT(1.div(2))
c1.takeT(1.rem(2))
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.plus(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.minus(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.times(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.div(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.rem(2)<!>)
c1.takeT(<!TYPE_MISMATCH!>1.inc()<!>)
c1.takeT(<!TYPE_MISMATCH!>1.dec()<!>)
c1.takeT(1.unaryPlus())
c1.takeT(1.unaryMinus())
c1.takeT(1.shl(2))
c1.takeT(1.shr(2))
c1.takeT(1.ushr(2))
c1.takeT(1.and(2))
c1.takeT(1.or(2))
c1.takeT(1.xor(2))
c1.takeT(1.inv())
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.unaryPlus()<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.unaryMinus()<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.shl(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.shr(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.ushr(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.and(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.or(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.xor(2)<!>)
c1.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.inv()<!>)
}
fun testShortDotCall(c2: C<Short>) {
c2.takeT(1.plus(2))
c2.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.plus(2)<!>)
c2.takeT(<!TYPE_MISMATCH!>1.inc()<!>)
c2.takeT(<!TYPE_MISMATCH!>1.dec()<!>)
c2.takeT(1.shr(2))
c2.takeT(1.inv())
c2.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.shr(2)<!>)
c2.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.inv()<!>)
}
fun testByteDotCall(c3: C<Byte>) {
c3.takeT(1.plus(2))
c3.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.plus(2)<!>)
c3.takeT(<!TYPE_MISMATCH!>1.inc()<!>)
c3.takeT(<!TYPE_MISMATCH!>1.dec()<!>)
c3.takeT(1.shr(2))
c3.takeT(1.inv())
c3.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.shr(2)<!>)
c3.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1.inv()<!>)
}
fun testLongOperatorInfixCall(c4: C<Long>) {
c4.takeT(1 + 2)
c4.takeT(1 - 2)
c4.takeT(1 * 2)
c4.takeT(1 / 2)
c4.takeT(1 % 2)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 + 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 - 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 * 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 / 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 % 2<!>)
c4.takeT(+1)
c4.takeT(-1)
c4.takeT(1 shl 2)
c4.takeT(1 shr 2)
c4.takeT(1 ushr 2)
c4.takeT(1 and 2)
c4.takeT(1 or 2)
c4.takeT(1 xor 2)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 shl 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 shr 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 ushr 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 and 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 or 2<!>)
c4.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 xor 2<!>)
}
fun testShortOperatorInfixCall(c5: C<Short>) {
c5.takeT(1 + 2)
c5.takeT(1 shr 2)
c5.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 + 2<!>)
c5.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 shr 2<!>)
}
fun testByteOperatorInfixCall(c6: C<Byte>) {
c6.takeT(1 + 2)
c6.takeT(1 shr 2)
c6.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 + 2<!>)
c6.takeT(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 shr 2<!>)
}
@@ -0,0 +1,116 @@
// LANGUAGE: -ApproximateIntegerLiteralTypesInReceiverPosition
// WITH_STDLIB
// ISSUE: KT-38895
fun takeByte(b: Byte) {}
fun takeInt(b: Int) {}
fun takeLong(b: Long) {}
fun testByteBinaryOperators() {
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 + 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 - 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 * 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 / 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 % 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.plus(1)<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.minus(1)<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.times(1)<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.div(1)<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.rem(1)<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 shl 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 shr 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 ushr 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 and 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 or 1<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2 xor 1<!>)
}
fun testByteUnaryOperators() {
// Won't change
takeByte(+1)
takeByte(-1)
// Will change
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.unaryPlus()<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.unaryMinus()<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>2.inv()<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>1.inc()<!>)
takeByte(<!ARGUMENT_TYPE_MISMATCH!>1.dec()<!>)
}
fun testLongBinaryOperators() {
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 + 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 - 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 * 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 / 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 % 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.plus(1)<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.minus(1)<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.times(1)<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.div(1)<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.rem(1)<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 shl 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 shr 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 ushr 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 and 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 or 1<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2 xor 1<!>)
// positive
takeLong(2 * 100000000000)
}
fun testLongUnaryOperators() {
// Won't change
takeLong(+1)
takeLong(-1)
// Will change
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.unaryPlus()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.unaryMinus()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.inv()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>1.inc()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>1.dec()<!>)
}
fun testIntBinaryOperators() {
takeInt(2 + 1)
takeInt(2 - 1)
takeInt(2 * 1)
takeInt(2 / 1)
takeInt(2 % 1)
takeInt(2.plus(1))
takeInt(2.minus(1))
takeInt(2.times(1))
takeInt(2.div(1))
takeInt(2.rem(1))
takeInt(2 shl 1)
takeInt(2 shr 1)
takeInt(2 ushr 1)
takeInt(2 and 1)
takeInt(2 or 1)
takeInt(2 xor 1)
}
fun testIntUnaryOperators() {
takeInt(+1)
takeInt(-1)
takeInt(2.unaryPlus())
takeInt(2.unaryMinus())
takeInt(2.inv())
takeInt(1.inc())
takeInt(1.dec())
}
fun testNoOperators() {
takeByte(1)
takeInt(1)
takeLong(1)
}
@@ -0,0 +1,116 @@
// LANGUAGE: -ApproximateIntegerLiteralTypesInReceiverPosition
// WITH_STDLIB
// ISSUE: KT-38895
fun takeByte(b: Byte) {}
fun takeInt(b: Int) {}
fun takeLong(b: Long) {}
fun testByteBinaryOperators() {
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 + 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 - 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 * 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 / 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 % 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.plus(1)<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.minus(1)<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.times(1)<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.div(1)<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.rem(1)<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 shl 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 shr 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 ushr 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 and 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 or 1<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 xor 1<!>)
}
fun testByteUnaryOperators() {
// Won't change
takeByte(+1)
takeByte(-1)
// Will change
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.unaryPlus()<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.unaryMinus()<!>)
takeByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.inv()<!>)
takeByte(<!TYPE_MISMATCH!>1.inc()<!>)
takeByte(<!TYPE_MISMATCH!>1.dec()<!>)
}
fun testLongBinaryOperators() {
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 + 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 - 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 * 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 / 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 % 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.plus(1)<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.minus(1)<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.times(1)<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.div(1)<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.rem(1)<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 shl 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 shr 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 ushr 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 and 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 or 1<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2 xor 1<!>)
// positive
takeLong(2 * 100000000000)
}
fun testLongUnaryOperators() {
// Won't change
takeLong(+1)
takeLong(-1)
// Will change
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.unaryPlus()<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.unaryMinus()<!>)
takeLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>2.inv()<!>)
takeLong(<!TYPE_MISMATCH!>1.inc()<!>)
takeLong(<!TYPE_MISMATCH!>1.dec()<!>)
}
fun testIntBinaryOperators() {
takeInt(2 + 1)
takeInt(2 - 1)
takeInt(2 * 1)
takeInt(2 / 1)
takeInt(2 % 1)
takeInt(2.plus(1))
takeInt(2.minus(1))
takeInt(2.times(1))
takeInt(2.div(1))
takeInt(2.rem(1))
takeInt(2 shl 1)
takeInt(2 shr 1)
takeInt(2 ushr 1)
takeInt(2 and 1)
takeInt(2 or 1)
takeInt(2 xor 1)
}
fun testIntUnaryOperators() {
takeInt(+1)
takeInt(-1)
takeInt(2.unaryPlus())
takeInt(2.unaryMinus())
takeInt(2.inv())
takeInt(1.inc())
takeInt(1.dec())
}
fun testNoOperators() {
takeByte(1)
takeInt(1)
takeLong(1)
}
@@ -0,0 +1,13 @@
package
public fun takeByte(/*0*/ b: kotlin.Byte): kotlin.Unit
public fun takeInt(/*0*/ b: kotlin.Int): kotlin.Unit
public fun takeLong(/*0*/ b: kotlin.Long): kotlin.Unit
public fun testByteBinaryOperators(): kotlin.Unit
public fun testByteUnaryOperators(): kotlin.Unit
public fun testIntBinaryOperators(): kotlin.Unit
public fun testIntUnaryOperators(): kotlin.Unit
public fun testLongBinaryOperators(): kotlin.Unit
public fun testLongUnaryOperators(): kotlin.Unit
public fun testNoOperators(): kotlin.Unit
@@ -7,9 +7,9 @@ fun fooShort(p: Short) = p
fun test() {
fooInt(1 % 1)
fooByte(1 % 1)
fooLong(1 % 1)
fooShort(1 % 1)
fooByte(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 % 1<!>)
fooLong(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 % 1<!>)
fooShort(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE!>1 % 1<!>)
}
public operator fun Int.<!EXTENSION_SHADOWED_BY_MEMBER!>rem<!>(other: Int): Int = 0
@@ -34,7 +34,7 @@ fun test() {
takeUInt(<!INTEGER_OVERFLOW, TYPE_MISMATCH!>Int.MAX_VALUE * 2<!>)
takeUInt(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>4294967294<!>)
takeUBytes(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>2<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>255<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH, SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>256<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>0<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED, TYPE_MISMATCH!>-1<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>40 + 2<!>)
takeUBytes(<!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>1<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>2<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>255<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH, SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>256<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>0<!>, <!SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED, TYPE_MISMATCH!>-1<!>, <!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE, SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED!>40 + 2<!>)
takeUInt(<!TYPE_MISMATCH!>1.myPlus(2)<!>)
@@ -9,7 +9,7 @@ fun test() {
js((b))
js(("c"))
js(<!CONSTANT_EXPECTED_TYPE_MISMATCH, JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>3<!>)
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT, TYPE_MISMATCH!>3 + 2<!>)
js(<!INTEGER_OPERATOR_RESOLVE_WILL_CHANGE, JSCODE_ARGUMENT_SHOULD_BE_CONSTANT, TYPE_MISMATCH!>3 + 2<!>)
js(<!CONSTANT_EXPECTED_TYPE_MISMATCH, JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>1.0f<!>)
js(<!CONSTANT_EXPECTED_TYPE_MISMATCH, JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>true<!>)
js("$a")
@@ -21,4 +21,4 @@ fun test() {
js("ccc")
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>nonConst()<!>)
}
}