[FIR] Always report when named arguments are not allowed
#KT-59177 Fixed
This commit is contained in:
+2
-2
@@ -43,10 +43,10 @@ class TooManyArguments(
|
||||
) : ResolutionDiagnostic(INAPPLICABLE_ARGUMENTS_MAPPING_ERROR)
|
||||
|
||||
class NamedArgumentNotAllowed(
|
||||
override val argument: FirExpression,
|
||||
val argument: FirExpression,
|
||||
val function: FirFunction,
|
||||
val forbiddenNamedArgumentsTarget: ForbiddenNamedArgumentsTarget
|
||||
) : InapplicableArgumentDiagnostic()
|
||||
) : ResolutionDiagnostic(INAPPLICABLE_ARGUMENTS_MAPPING_ERROR)
|
||||
|
||||
class ArgumentPassedTwice(
|
||||
override val argument: FirExpression,
|
||||
|
||||
@@ -6,6 +6,6 @@ class A(foo: Int.() -> Unit) {
|
||||
|
||||
fun test(foo: Int.(String) -> Unit) {
|
||||
4.foo("")
|
||||
4.foo(<!NO_VALUE_FOR_PARAMETER!>p1 = "")<!>
|
||||
4.foo(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED!>p1<!> = "")<!>
|
||||
4.foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>p2<!> = "")
|
||||
}
|
||||
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
// FILE: JavaSuperClass.java
|
||||
|
||||
public class JavaSuperClass {
|
||||
public void foo(int javaName) {}
|
||||
|
||||
public void multipleParameters(int first, long second, String third) {}
|
||||
}
|
||||
|
||||
// FILE: 1.kt
|
||||
|
||||
fun directInvocation() = JavaSuperClass().foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>javaName<!> = 1)
|
||||
|
||||
open class KotlinSubClass : JavaSuperClass()
|
||||
|
||||
fun viaFakeOverride() = KotlinSubClass().foo(<!NAMED_ARGUMENTS_NOT_ALLOWED!>javaName<!> = 2)
|
||||
|
||||
class KotlinSubSubClass : KotlinSubClass() {
|
||||
override fun foo(kotlinName: Int) {}
|
||||
}
|
||||
|
||||
fun viaRealOverride() = KotlinSubSubClass().foo(kotlinName = 3)
|
||||
|
||||
|
||||
fun unresolvedParameter() = JavaSuperClass().foo(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>nonexistentName<!> = 4)<!>
|
||||
|
||||
|
||||
fun multipleParameters() = JavaSuperClass().multipleParameters(<!NAMED_ARGUMENTS_NOT_ALLOWED!>first<!> = 1, <!NAMED_ARGUMENTS_NOT_ALLOWED!>second<!> = 2L, <!NAMED_ARGUMENTS_NOT_ALLOWED!>third<!> = "3")
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: JavaSuperClass.java
|
||||
|
||||
public class JavaSuperClass {
|
||||
|
||||
+15
-6
@@ -13,15 +13,24 @@ fun test1(f: Function1Impl) {
|
||||
|
||||
fun test2(f: (String) -> Unit) {
|
||||
f("")
|
||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = "")<!>
|
||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = "")<!>
|
||||
f.invoke("")
|
||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = "")<!>
|
||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = "")<!>
|
||||
}
|
||||
|
||||
fun test3(f: String.(String) -> Unit) {
|
||||
"".f("")
|
||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>zzz<!> = "")<!>
|
||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>zzz<!> = "")<!>
|
||||
}
|
||||
|
||||
fun test4(f: (myParamName: String) -> Unit) {
|
||||
f("")
|
||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = "")<!>
|
||||
f.invoke("")
|
||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = "")<!>
|
||||
}
|
||||
|
||||
+9
@@ -25,3 +25,12 @@ fun test3(f: String.(String) -> Unit) {
|
||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>zzz<!> = "")<!>
|
||||
}
|
||||
|
||||
fun test4(f: (myParamName: String) -> Unit) {
|
||||
f("")
|
||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f(<!NAMED_ARGUMENTS_NOT_ALLOWED!>myParamName<!> = "")
|
||||
f.invoke("")
|
||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
||||
f.invoke(<!NAMED_ARGUMENTS_NOT_ALLOWED!>myParamName<!> = "")
|
||||
}
|
||||
|
||||
+1
@@ -3,6 +3,7 @@ package
|
||||
public fun test1(/*0*/ f: Function1Impl): kotlin.Unit
|
||||
public fun test2(/*0*/ f: (kotlin.String) -> kotlin.Unit): kotlin.Unit
|
||||
public fun test3(/*0*/ f: kotlin.String.(kotlin.String) -> kotlin.Unit): kotlin.Unit
|
||||
public fun test4(/*0*/ f: (myParamName: kotlin.String) -> kotlin.Unit): kotlin.Unit
|
||||
|
||||
public final class Function1Impl : (kotlin.String) -> kotlin.Unit {
|
||||
public constructor Function1Impl()
|
||||
|
||||
Reference in New Issue
Block a user