package merlin-lib
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=49b3b4c778c12125fc7405e73790b0b312d5d79749dd73d4838b6562a2533022
sha512=6350ff076ac61727c48bc098a05520c5d343f3323b2f3b6d7d69fdd568e51abca6945cbcbc3a6ae97fd198bd7bbdcae823fbd0f3f14a37972fe713da2ed14f2d
doc/merlin-lib.ocaml_utils/Ocaml_utils/Local_store/index.html
Module Ocaml_utils.Local_store
Source
This module provides some facilities for creating references (and hash tables) which can easily be snapshotted and restored to an arbitrary version.
It is used throughout the frontend (read: typechecker), to register all (well, hopefully) the global state. Thus making it easy for tools like Merlin to go back and forth typechecking different files.
Creators
Similar to Stdlib.ref
, except the allocated reference is registered into the store.
Used to register hash tables. Those also need to be placed into refs to be easily swapped out, but one can't just "snapshot" the initial value to create fresh instances, so instead an initializer is required.
Use it like this:
let my_table = s_table Hashtbl.create 42
State management
Note: all the following functions are currently unused inside the compiler codebase. Merlin is their only user at the moment.
Returns a fresh instance of the store.
The first time this function is called, it snapshots the value of all the registered references, later calls to fresh
will return instances initialized to those values.
with_store s f
resets all the registered references to the value they have in s
for the run of f
. If f
updates any of the registered refs, s
is updated to remember those changes.
Resets all the references to the initial snapshot (i.e. to the same values that new instances start with).
Returns true
when a store is active (i.e. when called from the callback passed to with_store
), false
otherwise.