Module Wax_utils.DebugSource

Developer-facing debug output, enabled per category with --debug.

Sourcetype category =
  1. | Timing
    (*

    Extend with future debug features.

    *)
Sourceval categories : string list

Known category names, for help text and error messages. Currently ["timing"].

Sourceval parse : string -> (category, string) result

Parse one category name; Error msg names the valid categories.

Sourceval enable : category list -> unit

Record which debug categories are active. Call once at startup.

Sourceval is_enabled : category -> bool

Whether the given category was enabled by enable.

Sourceval timed : string -> (unit -> 'a) -> 'a

timed label f runs f (). When Timing is enabled, it measures the wall-clock duration of f and prints "<label>: <n> ms" to stderr; otherwise it just runs f with no measurement and no output.

Sourceval timed_if : bool -> string -> (unit -> 'a) -> 'a

timed_if cond label f is timed label f when cond holds, and f () untimed otherwise. Used to skip timing a measurement-only sub-pass (e.g. the dry trivia-collection traversal of the printer).