FIR checkers: report specific errors instead of INAPPLICABLE_CANDIDATE

Specifically, the report the following 4 errors.

* NON_VARARG_SPREAD
* ARGUMENT_PASSED_TWICE
* TOO_MANY_ARGUMENTS
* NO_VALUE_FOR_PARAMETER

Also added/updated the following position strategies.
* NAME_OF_NAMED_ARGUMENT
* VALUE_ARGUMENTS
This commit is contained in:
Tianyu Geng
2021-03-04 14:01:32 -08:00
committed by Mikhail Glukhikh
parent fc8d0e3ee0
commit 761a0a7d0d
143 changed files with 526 additions and 470 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ class A
infix operator fun A.plus(a : Any) {
1.foo()
true.<error descr="[INAPPLICABLE_CANDIDATE] Inapplicable candidate(s): /foo">foo</error>()
true.foo(<error descr="[NO_VALUE_FOR_PARAMETER] No value passed for parameter 'x'"><error descr="[NO_VALUE_FOR_PARAMETER] No value passed for parameter 'y'">)</error></error>
1
}
+4 -4
View File
@@ -3,15 +3,15 @@ package toplevelObjectDeclarations
open fun foo() : Int = 1
}
<error descr="[INAPPLICABLE_CANDIDATE] Inapplicable candidate(s): toplevelObjectDeclarations/Foo.Foo">class T : <error descr="[SUPERTYPE_NOT_INITIALIZED] This type has a constructor, and thus must be initialized here">Foo</error> {}</error>
<error descr="[NO_VALUE_FOR_PARAMETER] No value passed for parameter 'y'">class T : <error descr="[SUPERTYPE_NOT_INITIALIZED] This type has a constructor, and thus must be initialized here">Foo</error> {}</error>
<error descr="[INAPPLICABLE_CANDIDATE] Inapplicable candidate(s): toplevelObjectDeclarations/Foo.Foo">object A : <error descr="[SUPERTYPE_NOT_INITIALIZED] This type has a constructor, and thus must be initialized here">Foo</error> {
object A : <error descr="[SUPERTYPE_NOT_INITIALIZED] This type has a constructor, and thus must be initialized here">Foo</error> {
val x : Int = 2
fun test() : Int {
return x + foo()
return x + foo(<error descr="[NO_VALUE_FOR_PARAMETER] No value passed for parameter 'y'">)</error>
}
}</error>
}
object B : A {}
@@ -0,0 +1,5 @@
data class XY(val x: Int, val y: Int)
fun convert(xy: XY, f: (XY) -> Int) = f(xy)
fun foo() = <error descr="[NO_VALUE_FOR_PARAMETER] No value passed for parameter 'xy'">convert { (<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: x">x</error><error descr="Unexpected tokens (use ';' to separate expressions on the same line)"><error descr="Expecting ')'">,</error> y)</error> }</error>
@@ -1,5 +1,3 @@
// FIR_IDENTICAL
data class XY(val x: Int, val y: Int)
fun convert(xy: XY, f: (XY) -> Int) = f(xy)
+1 -1
View File
@@ -4,7 +4,7 @@ fun <K, V> testMutableMapEntry(map: MutableMap<K, V>, k1: K, v: V) {
}
fun foo() {
<error descr="[INAPPLICABLE_CANDIDATE] Inapplicable candidate(s): /testMutableMapEntry">testMutableMapEntry</error>(hashMap(1 to 'a'), 'b')
testMutableMapEntry(hashMap(1 to 'a'), 'b'<error descr="[NO_VALUE_FOR_PARAMETER] No value passed for parameter 'v'">)</error>
}
//extract from library