type t = | Nowhere| Simple of {line : int;start : int;stop : int;
}| Multiline of {start : int * int;stop : int * int;
}
type 'a with_txtloc = {txtloc : t;contents : 'a;
}val expand : t -> ((int * int) * (int * int)) optionval line_start : t -> inttype line = | Errored_line of {err : string;around : string * string;
}| Context_line of string| Eof of {errored : bool;
}
val errored_line : txtloc:t -> line_number:int -> string -> lineval context_line : string -> lineval string_line_reader : string -> unit -> stringval lines_around :
?ctx:??? ->
txtloc:t ->
(unit -> string) ->
(int * line) listval lines_around_txtloc :
?ctx:??? ->
txtloc:t ->
in_channel ->
(int * line) listval lines_around_txtloc_string :
?ctx:??? ->
txtloc:t ->
string ->
(int * line) list