Module Computation_watcher.Source_code_positions

type pending = {
  1. watchers : string option Core.Source_code_position.Map.t;
  2. depended_on_at : Core.Source_code_position.Set.t;
}

watchers is a list that contains the chain of Computation_watcher nodes that contain this current node. dependency_definitions a set of Source_code_position.ts that caused the Computation_watcher to update. All of these dependency_definitions are semantically the same but some nodes happen to be generated more than once depended_on_at is the location of the Map node/let%arr that was called on the value

val sexp_of_pending : pending -> Sexplib0.Sexp.t
type finalized = {
  1. watchers : string option Core.Source_code_position.Map.t;
  2. dependency_definitions : Core.Source_code_position.Set.t;
  3. depended_on_at : Core.Source_code_position.Set.t;
}
val sexp_of_finalized : finalized -> Sexplib0.Sexp.t
type _ t =
  1. | Pending : pending -> pending t
  2. | Finalized : finalized -> finalized t
val sexp_of_t : ('a__001_ -> Sexplib0.Sexp.t) -> 'a__001_ t -> Sexplib0.Sexp.t
val empty : pending t
val add_watcher : 'a t -> Core.Source_code_position.t -> string option -> 'a t
val add_dependency_definition : 'a t -> Core.Source_code_position.t -> finalized t
val add_depended_on_at : 'a t -> Core.Source_code_position.t -> 'a t
val extract_finalized : finalized t -> finalized
val merge_depended_on_at : 'a t -> Core.Source_code_position.Set.t -> 'a t
val merge_watchers_of_t : _ t -> _ t -> string option Core.Source_code_position.Map.t