Add deprecation warning about new integer operators on literals resolution
#KT-38895
This commit is contained in:
committed by
TeamCityServer
parent
53b6d6f767
commit
6afb905ad6
+35
-35
@@ -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<!>)
|
||||
}
|
||||
|
||||
+116
@@ -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)
|
||||
}
|
||||
+116
@@ -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)
|
||||
}
|
||||
+13
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user