blob: ee6221e9dc202f89c376a96c36a785d7518b3f06 [file] [edit]
module
/-!
`builtin_initialize` and `initialize` in a `module` without `private`/`public` should work, even
when the type references a non-public declaration.
-/
structure MyState where
value : Nat := 0
deriving Inhabited
builtin_initialize myState : IO.Ref MyState ← IO.mkRef {}
initialize myState' : IO.Ref MyState ← IO.mkRef {}
builtin_initialize
myState.modify fun s => { s with value := s.value + 1 }
-- Exercise match auxiliary generation inside `initialize` (reproducer for Batteries issue)
initialize myRef : IO.Ref Nat ← do
let x : Nat ⊕ Nat := .inl 42
let v := match x with
| .inl n => n
| .inr n => n + 1
IO.mkRef v
initialize
myRef.modify (· + 1)