// RUN_PIPELINE_TILL: BACKEND
fun foo(block: () -> Unit) {}
fun bar(block: () -> String) {}
fun itIs(block: (String) -> String) {}
fun multipleArgs(block: (String, String) -> String) {}

fun main() {
    foo { "This is test" }
    bar { "This is also test" }
    itIs { "this is $it test" }
    multipleArgs { a, b -> "This is test of $a, $b" }

    val s = { "OK" }()

    val f = { "OK" }
    val ss = f.invoke()

    val empty: () -> Unit = { }
}

/* GENERATED_FIR_TAGS: functionDeclaration, functionalType, lambdaLiteral, localProperty, propertyDeclaration,
stringLiteral */
