[FIR] Resolve infix calls to infix functions only
Implements INFIX_MODIFIER_REQUIRED diagnostics
This commit is contained in:
committed by
TeamCityServer
parent
df14deb5a0
commit
b1c8669b43
+5
-5
@@ -18,21 +18,21 @@ fun Example.withLambda(f: () -> Unit) = Pair(this, f)
|
||||
|
||||
fun test() {
|
||||
Example() to Example()
|
||||
Example() toNonInfix Example()
|
||||
Example() <!INFIX_MODIFIER_REQUIRED!>toNonInfix<!> Example()
|
||||
Example().toNonInfix(Example())
|
||||
|
||||
val a = Example()
|
||||
val b = Example()
|
||||
|
||||
a toExt b
|
||||
a toExtNonInfix b
|
||||
a <!INFIX_MODIFIER_REQUIRED!>toExtNonInfix<!> b
|
||||
a.toExtNonInfix(b)
|
||||
|
||||
a toExtWithExtraParams b
|
||||
a toExtNonInfixWithExtraParams b
|
||||
a <!INFIX_MODIFIER_REQUIRED!>toExtNonInfixWithExtraParams<!> b
|
||||
|
||||
a toExtDefaultValues b
|
||||
a toExtNonInfixDefaultValues b
|
||||
a <!INFIX_MODIFIER_REQUIRED!>toExtNonInfixDefaultValues<!> b
|
||||
|
||||
a withLambda { }
|
||||
a <!INFIX_MODIFIER_REQUIRED!>withLambda<!> { }
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ fun test(a: Any) {
|
||||
1ffoo a
|
||||
1doo a
|
||||
1ddoo a
|
||||
1contains a
|
||||
1<!INFIX_MODIFIER_REQUIRED!>contains<!> a
|
||||
|
||||
1Lfoo a
|
||||
1L<!UNRESOLVED_REFERENCE!>oo<!> a
|
||||
|
||||
-10
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER
|
||||
|
||||
infix fun Int.rem(other: Int) = 10
|
||||
|
||||
+16
-16
@@ -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<!>)
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ inline fun inlineFunWithInvoke(s: (p: Int) -> Unit) {
|
||||
{
|
||||
s(11)
|
||||
s.invoke(11)
|
||||
s invoke 11
|
||||
s <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
}()
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ inline fun inlineFunWithInvokeNonInline(noinline s: (p: Int) -> Unit) {
|
||||
{
|
||||
s(11)
|
||||
s.invoke(11)
|
||||
s invoke 11
|
||||
s <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
}()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
|
||||
inline fun inlineFunWithInvoke(s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) {
|
||||
s(11)
|
||||
s.invoke(11)
|
||||
s invoke 11
|
||||
|
||||
11.ext(11)
|
||||
11 ext 11
|
||||
}
|
||||
|
||||
inline fun inlineFunWithInvokeNonInline(noinline s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) {
|
||||
s(11)
|
||||
s.invoke(11)
|
||||
s invoke 11
|
||||
|
||||
11.ext(11)
|
||||
11 ext 11
|
||||
}
|
||||
|
||||
inline fun Function1<Int, Unit>.inlineExt() {
|
||||
invoke(11)
|
||||
this.invoke(11)
|
||||
this invoke 11
|
||||
this(11)
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
|
||||
inline fun inlineFunWithInvoke(s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) {
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
inline fun inlineFunWithInvoke(s: (p: Int) -> Unit) {
|
||||
(s)(11)
|
||||
(s).invoke(11)
|
||||
(s) invoke 11
|
||||
(s) <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
(<!USAGE_IS_NOT_INLINABLE!>s<!>)
|
||||
}
|
||||
|
||||
inline fun Function1<Int, Unit>.inlineExt() {
|
||||
(this).invoke(11)
|
||||
(this) invoke 11
|
||||
(this) <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
(this)(11)
|
||||
(this)
|
||||
}
|
||||
@@ -17,7 +17,7 @@ inline fun Function1<Int, Unit>.inlineExt() {
|
||||
inline fun inlineFunWithInvoke2(s: (p: Int) -> Unit) {
|
||||
(((s)))(11)
|
||||
(((s))).invoke(11)
|
||||
(((s))) invoke 11
|
||||
(((s))) <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
(((<!USAGE_IS_NOT_INLINABLE!>s<!>)))
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -17,10 +17,10 @@ inline fun inlineFunWithInvoke(s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) {
|
||||
Test().test(){
|
||||
s(11)
|
||||
s.invoke(11)
|
||||
s invoke 11
|
||||
s <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
|
||||
11.ext(11)
|
||||
11 ext 11
|
||||
11 <!INFIX_MODIFIER_REQUIRED!>ext<!> 11
|
||||
|
||||
<!USAGE_IS_NOT_INLINABLE!>s<!>
|
||||
<!USAGE_IS_NOT_INLINABLE!>ext<!>
|
||||
@@ -32,10 +32,10 @@ inline fun inlineFunWithInvokeNonInline(noinline s: (p: Int) -> Unit, ext: Int.(
|
||||
Test().test(){
|
||||
s(11)
|
||||
s.invoke(11)
|
||||
s invoke 11
|
||||
s <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
|
||||
11.ext(11)
|
||||
11 ext 11
|
||||
11 <!INFIX_MODIFIER_REQUIRED!>ext<!> 11
|
||||
|
||||
s
|
||||
<!USAGE_IS_NOT_INLINABLE!>ext<!>
|
||||
@@ -48,7 +48,7 @@ inline fun Function1<Int, Unit>.inlineExt() {
|
||||
Test().test(){
|
||||
invoke(11)
|
||||
this.invoke(11)
|
||||
this invoke 11
|
||||
this <!INFIX_MODIFIER_REQUIRED!>invoke<!> 11
|
||||
this(11)
|
||||
|
||||
this
|
||||
|
||||
+2
-2
@@ -24,13 +24,13 @@ fun a() {
|
||||
consumeInt(<!ARGUMENT_TYPE_MISMATCH!>a - b<!>)
|
||||
|
||||
consumeString(a plus b)
|
||||
consumeInt(<!ARGUMENT_TYPE_MISMATCH!>a minus b<!>)
|
||||
consumeInt(a minus b)
|
||||
|
||||
a * b
|
||||
a / b
|
||||
|
||||
a times b
|
||||
a div b
|
||||
a <!INFIX_MODIFIER_REQUIRED!>div<!> b
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@ fun a() {
|
||||
a plus b
|
||||
a minus b
|
||||
a times b
|
||||
a div b
|
||||
a <!INFIX_MODIFIER_REQUIRED!>div<!> b
|
||||
|
||||
with (Example()) {
|
||||
consumeInt(this + a)
|
||||
@@ -35,9 +35,9 @@ fun a() {
|
||||
consumeInt(this / b)
|
||||
|
||||
consumeInt(this plus a)
|
||||
consumeString(<!ARGUMENT_TYPE_MISMATCH!>this minus b<!>)
|
||||
consumeString(this minus b)
|
||||
consumeInt(this times a)
|
||||
consumeInt(this div b)
|
||||
consumeInt(this <!INFIX_MODIFIER_REQUIRED!>div<!> b)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ fun test() {
|
||||
|
||||
consumeExample2(<!ARGUMENT_TYPE_MISMATCH!>++a<!>)
|
||||
|
||||
consumeString(<!ARGUMENT_TYPE_MISMATCH!>a plus b<!>)
|
||||
consumeString(a plus b)
|
||||
}
|
||||
|
||||
fun consumeInt(i: Int) {}
|
||||
|
||||
+6
-6
@@ -41,13 +41,13 @@ fun test() {
|
||||
platformN + 1
|
||||
platformJ + 1
|
||||
|
||||
1 plus platformNN
|
||||
1 plus platformN
|
||||
1 plus platformJ
|
||||
1 <!INFIX_MODIFIER_REQUIRED!>plus<!> platformNN
|
||||
1 <!INFIX_MODIFIER_REQUIRED!>plus<!> platformN
|
||||
1 <!INFIX_MODIFIER_REQUIRED!>plus<!> platformJ
|
||||
|
||||
platformNN plus 1
|
||||
platformN plus 1
|
||||
platformJ plus 1
|
||||
platformNN <!INFIX_MODIFIER_REQUIRED!>plus<!> 1
|
||||
platformN <!INFIX_MODIFIER_REQUIRED!>plus<!> 1
|
||||
platformJ <!INFIX_MODIFIER_REQUIRED!>plus<!> 1
|
||||
|
||||
platformNN += 1
|
||||
platformN += 1
|
||||
|
||||
Reference in New Issue
Block a user