| // LANGUAGE: +SuspendConversion |
| // DIAGNOSTICS: -UNUSED_PARAMETER |
| // IGNORE_BACKEND: JVM |
| // IGNORE_LIGHT_ANALYSIS |
| // java.lang.IllegalStateException: OVERLOAD_RESOLUTION_AMBIGUITY: Overload resolution ambiguity: |
| // public fun foo(x: () -> Int): Unit defined in root package in file overloadResolutionBySuspendModifier.kt |
| // public fun foo(x: suspend () -> Int): Unit defined in root package in file overloadResolutionBySuspendModifier.kt (15,5) in /overloadResolutionBySuspendModifier.kt |
| |
| var foo1 = false |
| var foo2 = false |
| |
| fun foo(x: () -> Int) { foo1 = true } |
| fun foo(x: suspend () -> Int) { foo2 = true} |
| |
| fun usualCall(): Int = 42 |
| suspend fun suspendCall(): Int = 42 |
| |
| fun test2(f: () -> Int, g: suspend () -> Int) { |
| foo(f) |
| foo(g) |
| } |
| |
| fun box(): String { |
| test2({ 1 }, { 2 }) |
| return if (foo1 && foo2) |
| "OK" |
| else |
| "foo1: $foo1; foo2: $foo2" |
| } |