lean4-htt/tests/lean/run/async_select_timer.lean
2025-09-02 11:55:36 +00:00

34 lines
848 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Std.Internal.Async.Timer
open Std Internal IO Async
def test1 : IO (AsyncTask Nat) := do
let s1 ← Sleep.mk 1000
let s2 ← Sleep.mk 1500
Selectable.one #[
.case (← s2.selector) fun _ => return AsyncTask.pure 2,
.case (← s1.selector) fun _ => return AsyncTask.pure 1,
]
/-- info: 1 -/
#guard_msgs in
#eval show IO _ from do
let task ← test1
IO.ofExcept task.get
def test2 : IO (AsyncTask Nat) := do
Selectable.one #[
.case (← Selector.sleep 1500) fun _ => return AsyncTask.pure 2,
.case (← Selector.sleep 1000) fun _ => return AsyncTask.pure 1,
]
/-- info: 1 -/
#guard_msgs in
#eval show IO _ from do
let task ← test2
IO.ofExcept task.get
/-- error: Selectable.one requires at least one Selectable -/
#guard_msgs in
#eval show IO _ from do
let foo ← Selectable.one (α := Unit) #[]