// !DIAGNOSTICS: -UNUSED_PARAMETER fun takeFnToAny(fn: () -> Any) {} fun takeFnToUnit(fn: () -> Unit) {} fun

takeFnToParameter(fn: () -> P) {} fun testAny() { takeFnToAny { } takeFnToAny { Unit } takeFnToAny { unresolved() } takeFnToAny { if (true) unresolved() } takeFnToAny { if (true) unresolved() else unresolved() } takeFnToAny(fun() = Unit) takeFnToAny(fun() {}) takeFnToAny(fun() { return }) takeFnToAny(fun() { return Unit }) takeFnToAny(fun(): Unit {}) takeFnToAny(fun(): Unit { return }) takeFnToAny(fun(): Unit { return Unit }) takeFnToAny(fun() { if (true) return }) takeFnToAny(fun() { if (true) return Unit }) takeFnToAny(fun() = unresolved()) takeFnToAny(fun() { unresolved() }) takeFnToAny(fun(): Unit { unresolved() }) takeFnToAny(fun() { return unresolved() }) takeFnToAny(fun() { if (true ) return unresolved() }) } fun testUnit() { takeFnToUnit { } takeFnToUnit { Unit } takeFnToUnit { unresolved() } takeFnToUnit { if (true) unresolved() } takeFnToUnit { if (true) unresolved() else unresolved() } takeFnToUnit(fun() = Unit) takeFnToUnit(fun() {}) takeFnToUnit(fun() { return }) takeFnToUnit(fun() { return Unit }) takeFnToUnit(fun(): Unit {}) takeFnToUnit(fun(): Unit { return }) takeFnToUnit(fun(): Unit { return Unit }) takeFnToUnit(fun() { if (true) return }) takeFnToUnit(fun() { if (true) return Unit }) takeFnToUnit(fun() = unresolved()) takeFnToUnit(fun() { unresolved() }) takeFnToUnit(fun(): Unit { unresolved() }) takeFnToUnit(fun() { return unresolved() }) takeFnToUnit(fun() { if (true ) return unresolved() }) } fun testParameter() { takeFnToParameter { } takeFnToParameter { Unit } takeFnToParameter { unresolved() } takeFnToParameter { if (true) unresolved() } takeFnToParameter { if (true) unresolved() else unresolved() } takeFnToParameter(fun() = Unit) takeFnToParameter(fun() {}) takeFnToParameter(fun() { return }) takeFnToParameter(fun() { return Unit }) takeFnToParameter(fun(): Unit {}) takeFnToParameter(fun(): Unit { return }) takeFnToParameter(fun(): Unit { return Unit }) takeFnToParameter(fun() { if (true) return }) takeFnToParameter(fun() { if (true) return Unit }) takeFnToParameter(fun() = unresolved()) takeFnToParameter(fun() { unresolved() }) takeFnToParameter(fun(): Unit { unresolved() }) takeFnToParameter(fun() { return unresolved() }) takeFnToParameter(fun() { if (true ) return unresolved() }) }