package test interface A { fun run(): T; } inline fun bar(inlineOptions(InlineOption.ONLY_LOCAL_RETURN) y: () -> String) = object : A { override fun run() : String { return call(y) } } public inline fun call(inlineOptions(InlineOption.ONLY_LOCAL_RETURN) f: () -> T): T = object : A { override fun run() : T { return f() } }.run()