// RUN_PIPELINE_TILL: BACKEND
// DIAGNOSTICS: -NAME_SHADOWING -UNUSED_VARIABLE -UNUSED_EXPRESSION

fun foo1(x: Int) {
    val x = if (true) { // OI: Map<String, () → Int>?, NI: Nothing?, error
        "" to { x }
    } else { null }

    <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Pair<kotlin.String, () -> kotlin.Int>?")!>x<!>
}

fun foo2(x: Int) {
    val x = if (true) {
        mapOf("" to { x }) // `Map<String, () → Int>` is in type info in IDE
    } else {
        null
    } // Fixed the problem: "type of entire `if` is `Map<String, *>?` (NI) instead of `Map<String, () → Int>?` (OI)"

    <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.collections.Map<kotlin.String, () -> kotlin.Int>?")!>x<!>
}

/* GENERATED_FIR_TAGS: functionDeclaration, ifExpression, lambdaLiteral, localProperty, nullableType,
propertyDeclaration, stringLiteral */
