[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
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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