Introduce warning for the changing arguments execution order for named varargs (KT-17691)
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// !LANGUAGE: -UseCorrectExecutionOrderForVarargArguments
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun foo(vararg x: Unit, y: Any) {}
|
||||
|
||||
fun main() {
|
||||
foo({ }(), y = { }())
|
||||
foo(<!CHANGING_ARGUMENTS_EXECUTION_ORDER_FOR_NAMED_VARARGS!>x = *<!REDUNDANT_SPREAD_OPERATOR_IN_NAMED_FORM_IN_FUNCTION!>arrayOf({ }())<!><!>, y = { }())
|
||||
foo(<!CHANGING_ARGUMENTS_EXECUTION_ORDER_FOR_NAMED_VARARGS!>x = arrayOf({ }())<!>, y = { }())
|
||||
foo(*arrayOf({ }()), y = { }())
|
||||
}
|
||||
|
||||
fun foo2(vararg x: Unit, y: Any, z: Any) {}
|
||||
|
||||
fun main2() {
|
||||
foo2(y = { }(), <!CHANGING_ARGUMENTS_EXECUTION_ORDER_FOR_NAMED_VARARGS!>x = arrayOf({ }())<!>, z = { }())
|
||||
}
|
||||
|
||||
fun foo3(vararg x: Unit, y: Any, z: Any = { }()) {}
|
||||
|
||||
fun main3() {
|
||||
// no warning, execution order is already right
|
||||
foo3(y = { }(), x = arrayOf({ }()))
|
||||
}
|
||||
Reference in New Issue
Block a user