[FIR] Resolve infix calls to infix functions only

Implements INFIX_MODIFIER_REQUIRED diagnostics
This commit is contained in:
Andrey Zinovyev
2021-05-14 15:22:43 +03:00
committed by TeamCityServer
parent df14deb5a0
commit b1c8669b43
46 changed files with 174 additions and 94 deletions
@@ -1,10 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER
infix fun Int.rem(other: Int) = 10
infix operator fun Int.minus(other: Int): Int = 20
const val a1 = (-5) rem 2
const val a2 = (-5).rem(2)
const val b1 = 5 minus 3
const val b2 = 5.minus(3)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER
infix fun Int.rem(other: Int) = 10
@@ -4,23 +4,23 @@ fun fooByte(p: Byte) = p
fun fooShort(p: Short) = p
fun test() {
fooInt(1 plus 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 plus 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 plus 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 plus 1<!>)
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>plus<!> 1<!>)
fooInt(1 times 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 times 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 times 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 times 1<!>)
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>times<!> 1<!>)
fooInt(1 div 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 div 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 div 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 div 1<!>)
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>div<!> 1<!>)
fooInt(1 rem 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 rem 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 rem 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 rem 1<!>)
fooInt(1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1)
fooByte(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1<!>)
fooLong(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1<!>)
fooShort(<!ARGUMENT_TYPE_MISMATCH!>1 <!INFIX_MODIFIER_REQUIRED!>rem<!> 1<!>)
}