| // RUN_PIPELINE_TILL: FRONTEND |
| // FIR_IDENTICAL |
| // DIAGNOSTICS: -UNUSED_PARAMETER |
| // LANGUAGE: -DiscriminateSuspendInOverloadResolution |
| |
| fun foo(x: () -> Int) {} |
| fun foo(x: suspend () -> Int) {} |
| |
| fun usualCall(): Int = 42 |
| suspend fun suspendCall(): Int = 42 |
| |
| // it's important to have ambiguity in these cases to introduce overload resolution by suspend modifier in future |
| fun test1() { |
| <!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!> { usualCall() } |
| <!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!> { <!ILLEGAL_SUSPEND_FUNCTION_CALL!>suspendCall<!>() } |
| } |
| |
| // candidate without suspend conversions is more specific |
| fun test2(f: () -> Int, g: suspend () -> Int) { |
| foo(f) |
| foo(g) |
| } |
| |
| /* GENERATED_FIR_TAGS: functionDeclaration, functionalType, integerLiteral, lambdaLiteral, suspend */ |