package ocamlformat-lib
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=dc8f2a330ca3930b36cacb2623bb360ed8bdf6e4a8acd293dbd9e2241a6fd33d
sha512=b28f545425fb5375447c90022d065dc7fd51ed2f66d8c1f65a71a6ad2465d039a8686e8f18249e5ad3a2362fee6149c855ef30eb45fb9d06d743a53d26b3e26f
doc/ocamlformat-lib.ocaml_common/Ocaml_common/Location/index.html
Module Ocaml_common.LocationSource
Source code locations (ranges of positions), used in parsetree.
Warning: this module is unstable and part of compiler-libs.
type t = Warnings.loc = {loc_start : Lexing.position;loc_end : Lexing.position;loc_ghost : bool;
}Note on the use of Lexing.position in this module. If pos_fname = "", then use !input_name instead. If pos_lnum = -1, then pos_bol = 0. Use pos_cnum and re-parse the file to get the line and character numbers. Else all fields are correct.
Set the file name and line number of the lexbuf to be the start of the named file.
Get the location of the current token from the lexbuf.
rhs_loc n returns the location of the symbol at position n, starting at 1, in the current parser rule.
file, line, char
Input info
Toplevel-specific functions
Printing locations
rewrite absolute path to honor the BUILD_PATH_PREFIX_MAP variable (https://reproducible-builds.org/specs/build-path-prefix-map/) if it is set.
In -absname mode, return the absolute path for this filename. Otherwise, returns the filename unchanged.
Toplevel-specific location highlighting
Reporting errors and warnings
The type of reports and report printers
type report_printer = {pp : report_printer -> Format.formatter -> report -> unit;pp_report_kind : report_printer -> report -> Format.formatter -> report_kind -> unit;pp_main_loc : report_printer -> report -> Format.formatter -> t -> unit;pp_main_txt : report_printer -> report -> Format.formatter -> (Format.formatter -> unit) -> unit;pp_submsgs : report_printer -> report -> Format.formatter -> msg list -> unit;pp_submsg : report_printer -> report -> Format.formatter -> msg -> unit;pp_submsg_loc : report_printer -> report -> Format.formatter -> t -> unit;pp_submsg_txt : report_printer -> report -> Format.formatter -> (Format.formatter -> unit) -> unit;
}A printer for reports, defined using open-recursion. The goal is to make it easy to define new printers by re-using code from existing ones.
Report printers used in the compiler
Detects the terminal capabilities and selects an adequate printer
Printing a report
Display an error or warning report.
Hook for redefining the printer of reports.
The hook is a unit -> report_printer and not simply a report_printer: this is useful so that it can detect the type of the output (a file, a terminal, ...) and select a printer accordingly.
Original report printer for use in hooks.
Reporting warnings
Converting a Warnings.t into a report
report_warning loc w produces a report for the given warning w, or None if the warning is not to be printed.
Hook for intercepting warnings.
Original warning reporter for use in hooks.
Printing warnings
Prints a warning. This is simply the composition of report_warning and print_report.
Same as print_warning, but uses !formatter_for_warnings as output formatter.
Reporting alerts
Converting an Alert.t into a report
report_alert loc w produces a report for the given alert w, or None if the alert is not to be printed.
Hook for intercepting alerts.
Original alert reporter for use in hooks.
Printing alerts
Prints an alert. This is simply the composition of report_alert and print_report.
Same as print_alert, but uses !formatter_for_warnings as output formatter.
Reporting errors
val error_of_printer :
?loc:t ->
?sub:msg list ->
(Format.formatter -> 'a -> unit) ->
'a ->
errorAutomatically reporting errors for raised exceptions
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).
Raising Error e signals an error e; the exception will be caught and the error will be printed.
Raising Already_displayed_error signals an error which has already been printed. The exception will be caught, but nothing will be printed
Reraise the exception if it is unknown.