// IGNORE_BACKEND: WASM
// https://youtrack.jetbrains.com/issue/KT-44571/Segfault-on-unnecessary-int-unboxing
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
package test

inline fun <T> takeT(t: T) {}
inline fun <T : Any> takeTSuperAny(t: T) {}
inline fun <T, U : T> takeU(u: U) {}
inline fun <T, U : T, R : U> takeR(r: R) {}
inline fun <A, B, T : Map<A, List<B>>> takeTWithMap(t: T) {}

// FILE: 2.kt
import test.*

fun box(): String {
    val f = { null } as () -> Int
    takeT(f())
    // Without fix we are going to get following instructions
    //    CHECKCAST java/lang/Number
    //    INVOKEVIRTUAL java/lang/Number.intValue ()I    // <- this one leads to NPE
    takeTSuperAny(f())
    takeU(f())
    takeR(f())

    val g = { null } as () -> Map<Int, List<String>>
    takeTWithMap(g())
    return "OK"
}
