This PR implements `casesOn` for `Thunk` and `Task`. Since these are builtin types, this needs to be special-cased in `toMono`. Fixes #8659.
39 lines
715 B
Text
39 lines
715 B
Text
def thunk1 : Thunk String := "foo"
|
|
|
|
/-- info: "foo" -/
|
|
#guard_msgs in
|
|
#eval let ⟨fn⟩ := thunk1; fn ()
|
|
|
|
/-- info: "foo" -/
|
|
#guard_msgs in
|
|
#eval (thunk1.casesOn id () : String)
|
|
|
|
def thunk2 : Thunk String := "bar"
|
|
|
|
/-- info: "bar" -/
|
|
#guard_msgs in
|
|
#eval (thunk2.casesOn id () : String)
|
|
|
|
/-- info: "bar" -/
|
|
#guard_msgs in
|
|
#eval let ⟨fn⟩ := thunk2; fn ()
|
|
|
|
def task1 : Task String := Task.pure "foo"
|
|
|
|
/-- info: "foo" -/
|
|
#guard_msgs in
|
|
#eval let ⟨v⟩ := task1; v
|
|
|
|
/-- info: "foo" -/
|
|
#guard_msgs in
|
|
#eval (task1.casesOn id : String)
|
|
|
|
def task2 : Task String := Task.pure "bar"
|
|
|
|
/-- info: "bar" -/
|
|
#guard_msgs in
|
|
#eval (task2.casesOn id : String)
|
|
|
|
/-- info: "bar" -/
|
|
#guard_msgs in
|
|
#eval let ⟨v⟩ := task2; v
|