FIR: check NAMED_ARGUMENTS_NOT_ALLOWED

The check has already been partially implemented in
org.jetbrains.kotlin.fir.resolve.calls.FirCallArgumentsProcessor. This
change completes the missing piece that determines if a `FirFunction`
has stable parameter names.
This commit is contained in:
Tianyu Geng
2021-03-05 00:12:36 +03:00
committed by Mikhail Glukhikh
parent 0d4e9ca0b9
commit be0dd84a06
19 changed files with 133 additions and 25 deletions
@@ -7,5 +7,5 @@ class A(foo: Int.() -> Unit) {
fun test(foo: Int.(String) -> Unit) {
4.foo("")
4.<!INAPPLICABLE_CANDIDATE!>foo<!>(p1 = "")
4.foo(p2 = "")
}
4.foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>p2 = ""<!>)
}
@@ -12,10 +12,10 @@ expect class Foo(zzz: Int) {
expect fun f2(xxx: Int)
fun testCommon() {
Foo(zzz = 0)
val f = Foo(aaa = true)
f.f1(xxx = "")
f2(xxx = 42)
Foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>zzz = 0<!>)
val f = Foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>aaa = true<!>)
f.f1(<!NAMED_ARGUMENTS_NOT_ALLOWED!>xxx = ""<!>)
f2(<!NAMED_ARGUMENTS_NOT_ALLOWED!>xxx = 42<!>)
}
// MODULE: m2-jvm(m1-common)
@@ -6,4 +6,4 @@ public class A {
// FILE: 1.kt
val test = A(x = 1, y = "2")
val test = A(<!NAMED_ARGUMENTS_NOT_ALLOWED!>x = 1<!>, <!NAMED_ARGUMENTS_NOT_ALLOWED!>y = "2"<!>)
@@ -8,11 +8,11 @@ public class JavaSuperClass {
// FILE: 1.kt
fun directInvocation() = JavaSuperClass().foo(javaName = 1)
fun directInvocation() = JavaSuperClass().foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>javaName = 1<!>)
open class KotlinSubClass : JavaSuperClass()
fun viaFakeOverride() = KotlinSubClass().foo(javaName = 2)
fun viaFakeOverride() = KotlinSubClass().foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>javaName = 2<!>)
class KotlinSubSubClass : KotlinSubClass() {
override fun foo(kotlinName: Int) {}
@@ -24,4 +24,4 @@ fun viaRealOverride() = KotlinSubSubClass().foo(kotlinName = 3)
fun unresolvedParameter() = JavaSuperClass().<!INAPPLICABLE_CANDIDATE!>foo<!>(nonexistentName = 4)
fun multipleParameters() = JavaSuperClass().multipleParameters(first = 1, second = 2L, third = "3")
fun multipleParameters() = JavaSuperClass().multipleParameters(<!NAMED_ARGUMENTS_NOT_ALLOWED!>first = 1<!>, <!NAMED_ARGUMENTS_NOT_ALLOWED!>second = 2L<!>, <!NAMED_ARGUMENTS_NOT_ALLOWED!>third = "3"<!>)
@@ -13,5 +13,5 @@ public class J {
package test
fun test() {
J("", r = { }, z = false)
J("", <!NAMED_ARGUMENTS_NOT_ALLOWED!>r = { }<!>, <!NAMED_ARGUMENTS_NOT_ALLOWED!>z = false<!>)
}
@@ -13,5 +13,5 @@ public class J {
package test
fun test() {
J.foo("", r = { }, z = false)
J.foo("", <!NAMED_ARGUMENTS_NOT_ALLOWED!>r = { }<!>, <!NAMED_ARGUMENTS_NOT_ALLOWED!>z = false<!>)
}
@@ -1,7 +1,7 @@
// !WITH_NEW_INFERENCE
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass) {
javaClass.doSomething(p = 1) {
javaClass.doSomething(<!NAMED_ARGUMENTS_NOT_ALLOWED!>p = 1<!>) {
bar()
}
}
@@ -11,4 +11,4 @@ fun bar(){}
// FILE: JavaClass.java
public class JavaClass {
public void doSomething(int p, Runnable runnable) { runnable.run(); }
}
}