[FIR] Support constant unary operators for integer literal operators

^KT-38895
This commit is contained in:
Dmitriy Novozhilov
2022-02-04 11:06:27 +03:00
committed by teamcity
parent 52b72a7dac
commit 1591518cf6
14 changed files with 116 additions and 20 deletions
@@ -14,15 +14,15 @@ fun testLongDotCall(c1: C<Long>) {
c1.takeT(1.rem(2))
c1.takeT(<!ARGUMENT_TYPE_MISMATCH!>1.inc()<!>)
c1.takeT(<!ARGUMENT_TYPE_MISMATCH!>1.dec()<!>)
c1.takeT(<!ARGUMENT_TYPE_MISMATCH!>1.unaryPlus()<!>)
c1.takeT(<!ARGUMENT_TYPE_MISMATCH!>1.unaryMinus()<!>)
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(<!ARGUMENT_TYPE_MISMATCH!>1.inv()<!>)
c1.takeT(1.inv())
}
fun testShortDotCall(c2: C<Short>) {
@@ -70,9 +70,9 @@ fun testLongUnaryOperators() {
takeLong(-1)
// Mismatch
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.unaryPlus()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.unaryMinus()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.inv()<!>)
takeLong(2.unaryPlus())
takeLong(2.unaryMinus())
takeLong(2.inv())
takeLong(<!ARGUMENT_TYPE_MISMATCH!>1.inc()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>1.dec()<!>)
}
@@ -68,9 +68,9 @@ fun testLongUnaryOperators() {
// Won't change
takeLong(+1)
takeLong(-1)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.unaryPlus()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.unaryMinus()<!>)
takeLong(<!ARGUMENT_TYPE_MISMATCH!>2.inv()<!>)
takeLong(2.unaryPlus())
takeLong(2.unaryMinus())
takeLong(2.inv())
// Will change
takeLong(<!ARGUMENT_TYPE_MISMATCH!>1.inc()<!>)