FIR: Introduce NAMED_PARAMETER_NOT_FOUND diagnostic

This commit is contained in:
Denis.Zharkov
2021-04-02 13:37:59 +03:00
committed by TeamCityServer
parent 2d42e64c17
commit 0637748f10
31 changed files with 103 additions and 66 deletions
@@ -15,7 +15,7 @@ fun test() {
foo("", 1, <!TOO_MANY_ARGUMENTS, UNRESOLVED_REFERENCE!>xx<!>)
<!INAPPLICABLE_CANDIDATE!>foo<!>(r = <!UNRESOLVED_REFERENCE!>xx<!>, i = "", s = "")
foo(<!NAMED_PARAMETER_NOT_FOUND!>r<!> = <!UNRESOLVED_REFERENCE!>xx<!>, i = "", s = "")
foo(i = 1, <!ARGUMENT_PASSED_TWICE!>i<!> = 1, s = 11)
@@ -11,8 +11,8 @@ interface D : B, A
fun foo(x : C, y : D){
x.foo(x = 0)
x.foo(y = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
y.foo(x = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
x.foo(<!NAMED_PARAMETER_NOT_FOUND!>y<!> = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
y.foo(<!NAMED_PARAMETER_NOT_FOUND!>x<!> = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
y.foo(y = 0)
}
@@ -21,7 +21,7 @@ abstract class D1 : A, B
fun bar(x : C1, y : D1){
x.foo(x = 0)
x.foo(y = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
x.foo(<!NAMED_PARAMETER_NOT_FOUND!>y<!> = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
y.foo(x = 0)
y.foo(y = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
y.foo(<!NAMED_PARAMETER_NOT_FOUND!>y<!> = 0<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -14,11 +14,11 @@ interface C : A, B { // Warning here, this is correct
}
fun test(c: C) {
c.foo(b1 = 1, b2 = 1.0<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(a1 = 1, b2 = 1.0<!NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(<!NAMED_PARAMETER_NOT_FOUND!>b1<!> = 1, <!NAMED_PARAMETER_NOT_FOUND!>b2<!> = 1.0<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(a1 = 1, <!NAMED_PARAMETER_NOT_FOUND!>b2<!> = 1.0<!NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(a1 = 1, a2 = 1.0)
c.foo(a1 = 1, a2 = 1.0)
c.bar(a1 = 1, a2 = 1.0, b3= ""<!NO_VALUE_FOR_PARAMETER!>)<!>
c.baz(a1 = 1, b2 = 1.0, a3 = "", b4 = 2, a5 = ""<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>)<!>
c.baz(a1 = 1, a2 = 1.0, a3 = "", b4 = 2, a5 = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
c.bar(a1 = 1, a2 = 1.0, <!NAMED_PARAMETER_NOT_FOUND!>b3<!>= ""<!NO_VALUE_FOR_PARAMETER!>)<!>
c.baz(a1 = 1, <!NAMED_PARAMETER_NOT_FOUND!>b2<!> = 1.0, a3 = "", <!NAMED_PARAMETER_NOT_FOUND!>b4<!> = 2, a5 = ""<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>)<!>
c.baz(a1 = 1, a2 = 1.0, a3 = "", <!NAMED_PARAMETER_NOT_FOUND!>b4<!> = 2, a5 = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -11,5 +11,5 @@ interface C : A<Int>, B { // Warning here, this is correct
fun test(c: C) {
c.foo(a = 1)
c.foo(b = 1<!NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(<!NAMED_PARAMETER_NOT_FOUND!>b<!> = 1<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -11,5 +11,5 @@ interface C : A, B { // Warning here, this is correct
fun test(c: C) {
c.foo(a = 1)
c.foo(b = 1<!NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(<!NAMED_PARAMETER_NOT_FOUND!>b<!> = 1<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -11,5 +11,5 @@ interface C<U> : A<U>, B<U> { // Warning here, this is correct
fun test(c: C<Int>) {
c.foo(a = 1)
c.foo(b = 1<!NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(<!NAMED_PARAMETER_NOT_FOUND!>b<!> = 1<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -21,7 +21,7 @@ class KotlinSubSubClass : KotlinSubClass() {
fun viaRealOverride() = KotlinSubSubClass().foo(kotlinName = 3)
fun unresolvedParameter() = JavaSuperClass(<!NO_VALUE_FOR_PARAMETER!>)<!>.foo(nonexistentName = 4)
fun unresolvedParameter() = JavaSuperClass(<!NO_VALUE_FOR_PARAMETER!>)<!>.foo(<!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")
@@ -21,7 +21,7 @@ fun test() {
bar(1, z = "")
bar(1, z = "", y = 2)
<!INAPPLICABLE_CANDIDATE!>bar<!>(z = "", 1)
bar(1, zz = "",
bar(1, <!NAMED_PARAMETER_NOT_FOUND!>zz<!> = "",
<!UNRESOLVED_REFERENCE!>zz<!>.foo
<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -18,5 +18,5 @@ fun test1(d: D) {
}
fun test2(c: C) {
c.foo(b1 = 1, b2 = 1.0<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>)<!>
c.foo(<!NAMED_PARAMETER_NOT_FOUND!>b1<!> = 1, <!NAMED_PARAMETER_NOT_FOUND!>b2<!> = 1.0<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -4,24 +4,24 @@ class Function1Impl : (String) -> Unit {
fun test1(f: Function1Impl) {
f("")
f(p0 = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f(<!NAMED_PARAMETER_NOT_FOUND!>p0<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f(myParamName = "")
f.invoke("")
f.invoke(p0 = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f.invoke(<!NAMED_PARAMETER_NOT_FOUND!>p0<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f.invoke(myParamName = "")
}
fun test2(f: (String) -> Unit) {
f("")
f(p0 = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f(myParamName = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f(<!NAMED_PARAMETER_NOT_FOUND!>p0<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f(<!NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f.invoke("")
f.invoke(p0 = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f.invoke(myParamName = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f.invoke(<!NAMED_PARAMETER_NOT_FOUND!>p0<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
f.invoke(<!NAMED_PARAMETER_NOT_FOUND!>myParamName<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
}
fun test3(f: String.(String) -> Unit) {
"".f("")
"".f(p0 = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
"".f(zzz = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
"".f(<!NAMED_PARAMETER_NOT_FOUND!>p0<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
"".f(<!NAMED_PARAMETER_NOT_FOUND!>zzz<!> = ""<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -1,9 +0,0 @@
package c
fun test() {
with (1) l@ {
<!INAPPLICABLE_CANDIDATE!>foo<!>(1, zz = { this@l } )
}
}
fun foo(x: Int) = x
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
package c
fun test() {
@@ -1,14 +0,0 @@
package c
fun zzz(i: Int, f: (Int) -> Int) { throw Exception("$i $f")}
fun test() {
fun foo(): Int = 42
fun bar(i: Int) = i
bar(<!INAPPLICABLE_CANDIDATE!>foo<!>(xx = zzz(11) { j: Int -> j + 7 }))
bar(zz = <!INAPPLICABLE_CANDIDATE!>foo<!>(
xx = zzz(12) { i: Int -> i + i })<!NO_VALUE_FOR_PARAMETER!>)<!>
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
package c
fun zzz(i: Int, f: (Int) -> Int) { throw Exception("$i $f")}
@@ -53,8 +53,8 @@ fun testMany(a: Any) {
manyFoo(s = "")
<!NONE_APPLICABLE!>manyFoo<!>(a)
<!NONE_APPLICABLE!>manyFoo<!>(v = a)
<!NONE_APPLICABLE!>manyFoo<!>(s = a)
<!NONE_APPLICABLE!>manyFoo<!>(v = a as Int)
<!NONE_APPLICABLE!>manyFoo<!>(s = a as String)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(v = a)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(s = a)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(v = a as Int)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(s = a as String)
}
@@ -53,8 +53,8 @@ fun testMany(a: Any) {
manyFoo(s = "")
<!NONE_APPLICABLE!>manyFoo<!>(a)
<!NONE_APPLICABLE!>manyFoo<!>(v = a)
<!NONE_APPLICABLE!>manyFoo<!>(s = a)
<!NONE_APPLICABLE!>manyFoo<!>(v = a as Int)
<!NONE_APPLICABLE!>manyFoo<!>(s = a as String)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(v = a)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(s = a)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(v = a as Int)
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(s = a as String)
}