// !LANGUAGE: +NewInference // !DIAGNOSTICS: -UNUSED_PARAMETER fun take(fn: () -> List) {} fun inferFromLambda(fn: () -> L): L = TODO() fun inferFromLambda2(fn: (Int) -> L): L = TODO() fun materialize(): T = TODO() fun id(arg: I) = arg fun testFunctions() { take { materialize() } take(fun() = materialize()) take(fun(): List = materialize()) take(fun(): List { return materialize() }) } fun testNestedCalls() { id(inferFromLambda { materialize() }) id(inferFromLambda(fun() = materialize())) id(inferFromLambda2(fun() = materialize())) }