// !LANGUAGE: +NewInference // !DIAGNOSTICS: -UNUSED_PARAMETER fun stringVararg(vararg args: String) {} fun intVararg(vararg args: Int) {} fun numberVararg(vararg args: Number) {} fun useStrings(fn: (String, String, String) -> Unit) = fn("foo", "bar", "boo") fun useStringArray(fn: (Array) -> Unit) = fn(arrayOf("foo", "bar", "boo")) fun useIntArray(fn: (Array) -> Unit) = fn(arrayOf(1, 2, 3)) fun usePrimitiveIntArray(fn: (IntArray) -> Unit) = fn(intArrayOf(4, 5, 6)) fun useMixedStringArgs1(fn: (String, Array) -> Unit) = fn("foo", arrayOf("bar", "baz")) fun useMixedStringArgs2(fn: (Array, String) -> Unit) = fn(arrayOf("foo", "bar"), "baz") fun useMixedStringArgs3(fn: (String, Array, String) -> Unit) = fn("foo", arrayOf("bar", "baz"), "boo") fun useTwoStringArrays(fn: (Array, Array) -> Unit) = fn(arrayOf("foo", "bar"), arrayOf("baz", "boo")) fun test() { useStrings(::stringVararg) useStringArray(::stringVararg) useIntArray(::numberVararg) usePrimitiveIntArray(::intVararg) useIntArray() -> Unit", "KFunction1")!>::intVararg) useMixedStringArgs1() -> Unit", "KFunction1, Unit>")!>::stringVararg) useMixedStringArgs2(, String) -> Unit", "KFunction1, Unit>")!>::stringVararg) useMixedStringArgs3(, String) -> Unit", "KFunction1, Unit>")!>::stringVararg) useTwoStringArrays(, Array) -> Unit", "KFunction1, Unit>")!>::stringVararg) }