// FIR_IGNORE // WITH_RUNTIME data class Tuple(val x: Int, val y: Int) // Int // │ fun ((Tuple) -> Int).invoke(Tuple): Int // │ │ constructor Tuple(Int, Int) // │ │ │ Int // │ │ │ │ Int // │ │ │ │ │ inline fun use(f: (Tuple) -> Int) = f(Tuple(1, 2)) fun foo(): Int { // (Tuple) -> Int // │ val l1 = { t: Tuple -> // foo..t: Tuple // Int │ val (Tuple).x: Int // │ │ │ val x = t.x // foo..t: Tuple // Int │ val (Tuple).y: Int // │ │ │ val y = t.y // val foo..x: Int // │ fun (Int).plus(Int): Int // │ │ val foo..y: Int // │ │ │ x + y } // fun use((Tuple) -> Int): Int // │ val foo..x: Int // │ Int │ fun (Int).plus(Int): Int // │ │ Int │ │ val foo..y: Int // │ │ │ │ │ │ use { (x, y) -> x + y } // fun use((Tuple) -> Int): Int // │ return use { // Unit // │ foo..it: Tuple // │ │ val (Tuple).x: Int // │ │ │ fun (Any).equals(Any?): Boolean // │ │ │ │ Int Int // │ │ │ │ │ │ if (it.x == 0) return@foo 0 // foo..it: Tuple // │ val (Tuple).y: Int // │ │ return@use it.y } } fun bar(): Int { // fun use((Tuple) -> Int): Int // │ return use lambda@{ // Unit // │ bar..it: Tuple // │ │ val (Tuple).x: Int // │ │ │ fun (Any).equals(Any?): Boolean // │ │ │ │ Int Int // │ │ │ │ │ │ if (it.x == 0) return@bar 0 // bar..it: Tuple // │ val (Tuple).y: Int // │ │ return@lambda it.y } } // collections/List // │ fun test(list: List) { // collections/MutableMap // │ fun collections/mutableMapOf(): collections/MutableMap // │ │ val map = mutableMapOf() // test.list: collections/List // │ fun collections/Iterable.forEach((Int) -> Unit): Unit // │ │ val test.map: collections/MutableMap // │ │ │ fun collections/MutableMap.getOrPut(Int, () -> String): String // │ │ │ │ test..it: Int // │ │ │ │ │ fun collections/mutableListOf(): collections/MutableList // │ │ │ │ │ │ fun (String).plus(Any?): String // │ │ │ │ │ │ │ list.forEach { map.getOrPut(it, { mutableListOf() }) += "" } } // () -> Unit // │ val simple = { } // () -> Int Int // │ │ val another = { 42 }