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:
committed by
Mikhail Glukhikh
parent
fc8d0e3ee0
commit
761a0a7d0d
+9
-9
@@ -39,7 +39,7 @@ fun <R> select(vararg x: R) = x[0]
|
||||
fun poll0(): Flow<String> {
|
||||
return flow {
|
||||
val inv = select(::bar, ::foo)
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ fun poll14(flag: Boolean): Flow<String> {
|
||||
fun poll15(flag: Boolean): Flow<String> {
|
||||
return flow {
|
||||
val inv = if (flag) { ::bar5 } else { ::foo5 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ fun poll17(flag: Boolean): Flow<String> {
|
||||
fun poll2(flag: Boolean): Flow<String> {
|
||||
return flow {
|
||||
val inv = when (flag) { true -> ::bar else -> ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,7 +193,7 @@ fun poll26(flag: Boolean): Flow<String> {
|
||||
fun poll3(flag: Boolean): Flow<String> {
|
||||
return flow {
|
||||
val inv = when (flag) { true -> ::bar false -> ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ fun poll36(flag: Boolean): Flow<String> {
|
||||
fun poll4(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar } finally { ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -270,7 +270,7 @@ fun poll43(): Flow<String> {
|
||||
fun poll44(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar5 } finally { ::foo5 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,7 +291,7 @@ fun poll46(): Flow<String> {
|
||||
fun poll5(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar } catch (e: Exception) { ::foo } finally { ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ fun poll53(): Flow<String> {
|
||||
fun poll54(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar5 } catch (e: Exception) { ::foo5 } finally { ::foo5 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -389,7 +389,7 @@ fun poll66(): Flow<String> {
|
||||
fun poll7(): Flow<String> {
|
||||
return flow {
|
||||
val inv = ::bar!!
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -72,7 +72,7 @@ fun poll14(flag: Boolean): Flow<String> {
|
||||
fun poll15(flag: Boolean): Flow<String> {
|
||||
return flow {
|
||||
val inv = if (flag) { ::bar5 } else { ::foo5 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ fun poll17(flag: Boolean): Flow<String> {
|
||||
fun poll4(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar } finally { ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ fun poll43(): Flow<String> {
|
||||
fun poll44(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar5 } finally { ::foo5 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ fun poll46(): Flow<String> {
|
||||
fun poll5(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar } catch (e: Exception) { ::foo } finally { ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ fun poll53(): Flow<String> {
|
||||
fun poll54(): Flow<String> {
|
||||
return flow {
|
||||
val inv = try { ::bar5 } catch (e: Exception) { ::foo5 } finally { ::foo5 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ class Flow<out R>(private val block: suspend FlowCollector<R>.() -> Unit)
|
||||
fun poll7(): Flow<String> {
|
||||
return flow {
|
||||
val inv = ::bar!!
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+3
-3
@@ -119,8 +119,8 @@ fun main() {
|
||||
* K <: (A) -> Unit -> TypeVariable(_RP1) >: A
|
||||
* K >: (C) -> TypeVariable(_R) -> TypeVariable(_RP1) <: C
|
||||
*/
|
||||
val x12 = <!INAPPLICABLE_CANDIDATE!>selectC<!>(id { <!DEBUG_INFO_EXPRESSION_TYPE("C")!>it<!> }, id { x: B -> })
|
||||
val x13 = <!INAPPLICABLE_CANDIDATE!>selectA<!>(id { <!DEBUG_INFO_EXPRESSION_TYPE("A")!>it<!> }, id { x: C -> })
|
||||
val x12 = selectC(id { <!DEBUG_INFO_EXPRESSION_TYPE("C")!>it<!> }, id { x: B -> }<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
val x13 = selectA(id { <!DEBUG_INFO_EXPRESSION_TYPE("A")!>it<!> }, id { x: C -> }<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
val x14 = selectC(id { <!DEBUG_INFO_EXPRESSION_TYPE("C")!>it<!> }, id { x: A -> }, { x -> x })
|
||||
val x15 = selectC(id { <!DEBUG_INFO_EXPRESSION_TYPE("C")!>it<!> }, { x: A -> }, id { x -> x })
|
||||
/*
|
||||
@@ -152,7 +152,7 @@ fun main() {
|
||||
select(id(fun String.(x: String) {}), id(fun(x: String, y: String) { }), { x: String, y: String -> x })
|
||||
// Convert to extension lambda is impossible because the lambda parameter types aren't specified explicitly
|
||||
select(id(fun String.(x: String) {}), id(fun(x: String, y: String) { }), { x, y -> x })
|
||||
select(<!INAPPLICABLE_CANDIDATE!>id<!>(id(fun(x: String, y: String) { }), fun String.(x: String) {}), { x, y -> x })
|
||||
select(id(id(fun(x: String, y: String) { }), <!TOO_MANY_ARGUMENTS!>fun String.(x: String) {}<!>), { x, y -> x })
|
||||
val x26: Int.(String) -> Int = fun (x: String) = 10 // it must be error, see KT-38439
|
||||
// Receiver must be specified in anonymous function declaration
|
||||
val x27: Int.(String) -> Int = id(fun (x: String) = 10)
|
||||
|
||||
+2
-2
@@ -2,6 +2,6 @@ fun test1(i: Int) = { i ->
|
||||
i
|
||||
}(i)
|
||||
|
||||
fun test2() = <!INAPPLICABLE_CANDIDATE!>{ i -> i }<!>()
|
||||
fun test2() = { i -> i }(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
|
||||
fun test3() = { i -> i }(1)
|
||||
fun test3() = { i -> i }(1)
|
||||
|
||||
@@ -8,5 +8,5 @@ fun <T> foo(a : T, b : Collection<T>, c : Int) {
|
||||
|
||||
fun <T> arrayListOf(vararg values: T): ArrayList<T> = throw Exception("$values")
|
||||
|
||||
val bar = <!INAPPLICABLE_CANDIDATE!>foo<!>("", arrayListOf(), )
|
||||
val bar2 = <!INAPPLICABLE_CANDIDATE!>foo<!><String>("", arrayListOf(), )
|
||||
val bar = foo("", arrayListOf(), <!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
val bar2 = foo<String>("", arrayListOf(), <!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
|
||||
+22
-22
@@ -30,22 +30,22 @@ fun poll11(flag: Boolean) {
|
||||
|
||||
fun poll12(flag: Boolean) {
|
||||
val inv = if (flag) { ::bar3 } else { ::foo3 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll13(flag: Boolean) {
|
||||
val inv = if (flag) { ::bar2 } else { ::foo3 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll14(flag: Boolean) {
|
||||
val inv = if (flag) { ::bar4 } else { ::foo4 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll15(flag: Boolean) {
|
||||
val inv = if (flag) { ::bar5 } else { ::foo5 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll16(flag: Boolean) {
|
||||
@@ -60,7 +60,7 @@ fun poll17(flag: Boolean) {
|
||||
|
||||
fun poll2(flag: Boolean) {
|
||||
val inv = when (flag) { true -> ::bar else -> ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll21(flag: Boolean) {
|
||||
@@ -70,12 +70,12 @@ fun poll21(flag: Boolean) {
|
||||
|
||||
fun poll22(flag: Boolean) {
|
||||
val inv = when (flag) { true -> ::bar3 else -> ::foo3 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll23(flag: Boolean) {
|
||||
val inv = when (flag) { true -> ::bar4 else -> ::foo4 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll24(flag: Boolean) {
|
||||
@@ -95,7 +95,7 @@ fun poll26(flag: Boolean) {
|
||||
|
||||
fun poll3(flag: Boolean) {
|
||||
val inv = when (flag) { true -> ::bar false -> ::foo }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll31(flag: Boolean) {
|
||||
@@ -105,12 +105,12 @@ fun poll31(flag: Boolean) {
|
||||
|
||||
fun poll32(flag: Boolean) {
|
||||
val inv = when (flag) { true -> ::bar3 false -> ::foo3 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll33(flag: Boolean) {
|
||||
val inv = when (flag) { true -> ::bar4 false -> ::foo4 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll34(flag: Boolean) {
|
||||
@@ -130,7 +130,7 @@ fun poll36(flag: Boolean) {
|
||||
|
||||
fun poll4() {
|
||||
val inv = try { ::bar } finally { ::<!UNRESOLVED_REFERENCE!>foo<!> }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll41() {
|
||||
@@ -140,17 +140,17 @@ fun poll41() {
|
||||
|
||||
fun poll42() {
|
||||
val inv = try { ::bar3 } finally { ::<!UNRESOLVED_REFERENCE!>foo3<!> }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll43() {
|
||||
val inv = try { ::bar4 } finally { ::foo4 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll44() {
|
||||
val inv = try { ::bar5 } finally { ::<!UNRESOLVED_REFERENCE!>foo5<!> }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll45() {
|
||||
@@ -165,7 +165,7 @@ fun poll46() {
|
||||
|
||||
fun poll5() {
|
||||
val inv = try { ::bar } catch (e: Exception) { ::foo } finally { ::<!UNRESOLVED_REFERENCE!>foo<!> }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll51() {
|
||||
@@ -175,17 +175,17 @@ fun poll51() {
|
||||
|
||||
fun poll52() {
|
||||
val inv = try { ::bar3 } catch (e: Exception) { ::foo3 } finally { ::<!UNRESOLVED_REFERENCE!>foo3<!> }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll53() {
|
||||
val inv = try { ::bar4 } catch (e: Exception) { ::foo4 } finally { ::foo4 }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll54() {
|
||||
val inv = try { ::bar5 } catch (e: Exception) { ::foo5 } finally { ::<!UNRESOLVED_REFERENCE!>foo5<!> }
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll55() {
|
||||
@@ -235,7 +235,7 @@ fun poll66() {
|
||||
|
||||
fun poll7() {
|
||||
val inv = ::bar!!
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll71() {
|
||||
@@ -245,7 +245,7 @@ fun poll71() {
|
||||
|
||||
fun poll72() {
|
||||
val inv = ::bar3!!
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll73() {
|
||||
@@ -270,7 +270,7 @@ fun poll76() {
|
||||
|
||||
fun poll8() {
|
||||
val inv = ::<!UNRESOLVED_REFERENCE!>bar<!> <!NONE_APPLICABLE!>in<!> <!NONE_APPLICABLE!>setOf<!>(::<!UNRESOLVED_REFERENCE!>foo<!>)
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll81() {
|
||||
@@ -280,7 +280,7 @@ fun poll81() {
|
||||
|
||||
fun poll82() {
|
||||
val inv = ::<!UNRESOLVED_REFERENCE!>bar3<!> <!NONE_APPLICABLE!>in<!> <!NONE_APPLICABLE!>setOf<!>(::<!UNRESOLVED_REFERENCE!>foo3<!>)
|
||||
<!INAPPLICABLE_CANDIDATE!>inv<!>()
|
||||
inv(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
fun poll83() {
|
||||
|
||||
Reference in New Issue
Block a user