[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)
|
) : ResolutionDiagnostic(INAPPLICABLE_ARGUMENTS_MAPPING_ERROR)
|
||||||
|
|
||||||
class NamedArgumentNotAllowed(
|
class NamedArgumentNotAllowed(
|
||||||
override val argument: FirExpression,
|
val argument: FirExpression,
|
||||||
val function: FirFunction,
|
val function: FirFunction,
|
||||||
val forbiddenNamedArgumentsTarget: ForbiddenNamedArgumentsTarget
|
val forbiddenNamedArgumentsTarget: ForbiddenNamedArgumentsTarget
|
||||||
) : InapplicableArgumentDiagnostic()
|
) : ResolutionDiagnostic(INAPPLICABLE_ARGUMENTS_MAPPING_ERROR)
|
||||||
|
|
||||||
class ArgumentPassedTwice(
|
class ArgumentPassedTwice(
|
||||||
override val argument: FirExpression,
|
override val argument: FirExpression,
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ class A(foo: Int.() -> Unit) {
|
|||||||
|
|
||||||
fun test(foo: Int.(String) -> Unit) {
|
fun test(foo: Int.(String) -> Unit) {
|
||||||
4.foo("")
|
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<!> = "")
|
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
|
// FILE: JavaSuperClass.java
|
||||||
|
|
||||||
public class JavaSuperClass {
|
public class JavaSuperClass {
|
||||||
|
|||||||
+15
-6
@@ -13,15 +13,24 @@ fun test1(f: Function1Impl) {
|
|||||||
|
|
||||||
fun test2(f: (String) -> Unit) {
|
fun test2(f: (String) -> Unit) {
|
||||||
f("")
|
f("")
|
||||||
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, 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!>myParamName<!> = "")<!>
|
||||||
f.invoke("")
|
f.invoke("")
|
||||||
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
f.invoke(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, 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!>myParamName<!> = "")<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test3(f: String.(String) -> Unit) {
|
fun test3(f: String.(String) -> Unit) {
|
||||||
"".f("")
|
"".f("")
|
||||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_PARAMETER_NOT_FOUND!>p0<!> = "")<!>
|
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, 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!>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!>p0<!> = "")<!>
|
||||||
"".f(<!NO_VALUE_FOR_PARAMETER!><!NAMED_ARGUMENTS_NOT_ALLOWED, NAMED_PARAMETER_NOT_FOUND!>zzz<!> = "")<!>
|
"".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 test1(/*0*/ f: Function1Impl): kotlin.Unit
|
||||||
public fun test2(/*0*/ f: (kotlin.String) -> kotlin.Unit): 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 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 final class Function1Impl : (kotlin.String) -> kotlin.Unit {
|
||||||
public constructor Function1Impl()
|
public constructor Function1Impl()
|
||||||
|
|||||||
Reference in New Issue
Block a user