Skip to content

Commit ba6e705

Browse files
committed
feat(Logger): debugging interface
1 parent 91d01f0 commit ba6e705

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

src/Logger.ml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
include LoggerSigs
2+
3+
module Make () = struct
4+
type 'a Effect.t +=
5+
| Debug : Diagnostic.loctext -> unit Effect.t
6+
| CallBegin : Diagnostic.loctext -> unit Effect.t
7+
| CallEnd : Diagnostic.loctext -> unit Effect.t
8+
9+
let emit_loctext t = Effect.perform @@ Debug t
10+
let emit ?loc s = emit_loctext @@ Diagnostic.loctext ?loc s
11+
let emitf ?loc = Diagnostic.kloctextf ?loc emit_loctext
12+
13+
let trace_open_loctext t = Effect.perform @@ CallBegin t
14+
let trace_close_loctext t = Effect.perform @@ CallEnd t
15+
16+
let trace ?loc s f =
17+
trace_open_loctext (Diagnostic.loctext ?loc s);
18+
Fun.protect f
19+
~finally:(fun () -> trace_close_loctext (Diagnostic.loctext ?loc s))
20+
let tracef ?loc =
21+
Diagnostic.ktextf @@ fun t f ->
22+
trace_open_loctext {Range.value = t; loc};
23+
Fun.protect f
24+
~finally:(fun () -> trace_close_loctext {Range.value = t; loc})
25+
end

src/Logger.mli

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
include module type of LoggerSigs
2+
3+
module Make () : S

src/LoggerSigs.ml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module type S =
2+
sig
3+
val emit : ?loc:Range.t -> string -> unit
4+
val emitf : ?loc:Range.t -> ('a, Format.formatter, unit, unit) format4 -> 'a
5+
val trace : ?loc:Range.t -> string -> (unit -> 'a) -> 'a
6+
val tracef : ?loc:Range.t -> ('b, Format.formatter, unit, (unit -> 'a) -> 'a) format4 -> 'b
7+
end

0 commit comments

Comments
 (0)