fun foo(f: (T) -> String) {} fun test() { foo { (x: Int) -> "$x"} } Resolved call: Candidate descriptor: fun foo(f: (T) -> String): Unit Resulting descriptor: fun foo(f: (Int) -> String): Unit Explicit receiver kind = NO_EXPLICIT_RECEIVER This object = NO_RECEIVER Receiver argument = NO_RECEIVER Value arguments mapping: SUCCESS f : (Int) -> String = { (x: Int) -> "$x"}