This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
71
unikernel/duniverse/ppxlib/astlib/location.mli
Normal file
71
unikernel/duniverse/ppxlib/astlib/location.mli
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
(** Source code locations (ranges of positions), used in parsetrees *)
|
||||
|
||||
type t = Ocaml_common.Location.t = {
|
||||
loc_start : Lexing.position;
|
||||
loc_end : Lexing.position;
|
||||
loc_ghost : bool;
|
||||
}
|
||||
(** The location type *)
|
||||
|
||||
type 'a loc = 'a Ocaml_common.Location.loc = { txt : 'a; loc : t }
|
||||
(** A located type *)
|
||||
|
||||
module Error : sig
|
||||
type location
|
||||
|
||||
type t
|
||||
(** The location error type. It contains a located main message and a
|
||||
(possibly empty) list of located submessages. *)
|
||||
|
||||
val is_well_formed : t -> bool
|
||||
(** A location error constructed via [make] is always well-formed. A malformed
|
||||
location error is a value of type [location_report] on compilers >= 4.08,
|
||||
whose [kind] is different from [Report_error]. Notice that
|
||||
[location_report] does not explicitly form part of Astlib. *)
|
||||
|
||||
val main_msg : t -> string loc
|
||||
(** Get the located error main message. *)
|
||||
|
||||
val sub_msgs : t -> string loc list
|
||||
(** Get the located error sub-messages. *)
|
||||
|
||||
val set_main_msg : t -> string -> t
|
||||
(** Set the text of the error's main message. The location stays as is. *)
|
||||
|
||||
val set_main_loc : t -> location -> t
|
||||
(** Set the location of the error's main message. The text satys as is. *)
|
||||
|
||||
val make : sub:string loc list -> string loc -> t
|
||||
(** Construct a location error. *)
|
||||
|
||||
val of_exn : exn -> t option
|
||||
(** Turn an exception into a location error, if possible. *)
|
||||
end
|
||||
with type location := t
|
||||
|
||||
val set_input_name : string -> unit
|
||||
(** Set the name of the input source, e.g. the file name. *)
|
||||
|
||||
val set_input_lexbuf : Lexing.lexbuf option -> unit
|
||||
(** Set the name of the input source, e.g. the file name. *)
|
||||
|
||||
val none : t
|
||||
(** An arbitrary value of type [t]; describes an empty ghost range. *)
|
||||
|
||||
(** {1 Automatically reporting errors for raised exceptions} *)
|
||||
|
||||
val register_error_of_exn : (exn -> Error.t option) -> unit
|
||||
(** Each compiler module which defines a custom type of exception which can
|
||||
surface as a user-visible error should register a "printer" for this
|
||||
exception using [register_error_of_exn]. The result of the printer is an
|
||||
[error] value containing a location, a message, and optionally sub-messages
|
||||
(each of them being located as well). *)
|
||||
|
||||
exception Error of Error.t
|
||||
(** Located exception. *)
|
||||
|
||||
val raise_errorf : ?loc:t -> ('a, Format.formatter, unit, 'b) format4 -> 'a
|
||||
(** Raise a located exception. *)
|
||||
|
||||
val report_exception : Format.formatter -> exn -> unit
|
||||
(** Report an exception on the given formatter *)
|
||||
Loading…
Add table
Add a link
Reference in a new issue