mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-17 08:06:43 -05:00
42 lines
No EOL
40 KiB
HTML
42 lines
No EOL
40 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Location (ocaml.Location)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Location</nav><header class="odoc-preamble"><h1>Module <code><span>Location</span></code></h1><p>Source code locations (ranges of positions), used in parsetree.</p><p><b>Warning:</b> this module is unstable and part of <span class="xref-unresolved">compiler-libs</span>.</p></header><nav class="odoc-toc"><ul><li><a href="#input-info">Input info</a></li><li><a href="#toplevel-specific-functions">Toplevel-specific functions</a></li><li><a href="#printing-locations">Printing locations</a></li><li><a href="#toplevel-specific-location-highlighting">Toplevel-specific location highlighting</a></li><li><a href="#reporting-errors-and-warnings">Reporting errors and warnings</a><ul><li><a href="#the-type-of-reports-and-report-printers">The type of reports and report printers</a></li><li><a href="#report-printers-used-in-the-compiler">Report printers used in the compiler</a></li><li><a href="#printing-a-report">Printing a <code>report</code></a></li></ul></li><li><a href="#reporting-warnings">Reporting warnings</a><ul><li><a href="#converting-a-warnings.t-into-a-report">Converting a <code>Warnings.t</code> into a <code>report</code></a></li><li><a href="#printing-warnings">Printing warnings</a></li></ul></li><li><a href="#reporting-alerts">Reporting alerts</a><ul><li><a href="#converting-an-alert.t-into-a-report">Converting an <code>Alert.t</code> into a <code>report</code></a></li><li><a href="#printing-alerts">Printing alerts</a></li></ul></li><li><a href="#reporting-errors">Reporting errors</a></li><li><a href="#automatically-reporting-errors-for-raised-exceptions">Automatically reporting errors for raised exceptions</a></li></ul></nav><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = <a href="../Warnings/index.html#type-loc">Warnings.loc</a></span><span> = </span><span>{</span></code><ol><li id="type-t.loc_start" class="def record field anchored"><a href="#type-t.loc_start" class="anchor"></a><code><span>loc_start : <a href="../Stdlib/Lexing/index.html#type-position">Stdlib.Lexing.position</a>;</span></code></li><li id="type-t.loc_end" class="def record field anchored"><a href="#type-t.loc_end" class="anchor"></a><code><span>loc_end : <a href="../Stdlib/Lexing/index.html#type-position">Stdlib.Lexing.position</a>;</span></code></li><li id="type-t.loc_ghost" class="def record field anchored"><a href="#type-t.loc_ghost" class="anchor"></a><code><span>loc_ghost : bool;</span></code></li></ol><code><span>}</span></code></div></div><p>Note on the use of Lexing.position in this module. If <code>pos_fname = ""</code>, then use <code>!input_name</code> instead. If <code>pos_lnum = -1</code>, then <code>pos_bol = 0</code>. Use <code>pos_cnum</code> and re-parse the file to get the line and character numbers. Else all fields are correct.</p><div class="odoc-spec"><div class="spec value anchored" id="val-none"><a href="#val-none" class="anchor"></a><code><span><span class="keyword">val</span> none : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>An arbitrary value of type <code>t</code>; describes an empty ghost range.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_none"><a href="#val-is_none" class="anchor"></a><code><span><span class="keyword">val</span> is_none : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>True for <code>Location.none</code>, false any other location</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-in_file"><a href="#val-in_file" class="anchor"></a><code><span><span class="keyword">val</span> in_file : <span>string <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Return an empty ghost range located in a given file.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-init"><a href="#val-init" class="anchor"></a><code><span><span class="keyword">val</span> init : <span><a href="../Stdlib/Lexing/index.html#type-lexbuf">Stdlib.Lexing.lexbuf</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Set the file name and line number of the <code>lexbuf</code> to be the start of the named file.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-curr"><a href="#val-curr" class="anchor"></a><code><span><span class="keyword">val</span> curr : <span><a href="../Stdlib/Lexing/index.html#type-lexbuf">Stdlib.Lexing.lexbuf</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Get the location of the current token from the <code>lexbuf</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-symbol_rloc"><a href="#val-symbol_rloc" class="anchor"></a><code><span><span class="keyword">val</span> symbol_rloc : <span>unit <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-symbol_gloc"><a href="#val-symbol_gloc" class="anchor"></a><code><span><span class="keyword">val</span> symbol_gloc : <span>unit <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rhs_loc"><a href="#val-rhs_loc" class="anchor"></a><code><span><span class="keyword">val</span> rhs_loc : <span>int <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>rhs_loc n</code> returns the location of the symbol at position <code>n</code>, starting at 1, in the current parser rule.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rhs_interval"><a href="#val-rhs_interval" class="anchor"></a><code><span><span class="keyword">val</span> rhs_interval : <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_pos_info"><a href="#val-get_pos_info" class="anchor"></a><code><span><span class="keyword">val</span> get_pos_info : <span><a href="../Stdlib/Lexing/index.html#type-position">Stdlib.Lexing.position</a> <span class="arrow">-></span></span> string * int * int</span></code></div><div class="spec-doc"><p>file, line, char</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-loc"><a href="#type-loc" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a loc</span></span><span> = </span><span>{</span></code><ol><li id="type-loc.txt" class="def record field anchored"><a href="#type-loc.txt" class="anchor"></a><code><span>txt : <span class="type-var">'a</span>;</span></code></li><li id="type-loc.loc" class="def record field anchored"><a href="#type-loc.loc" class="anchor"></a><code><span>loc : <a href="#type-t">t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mknoloc"><a href="#val-mknoloc" class="anchor"></a><code><span><span class="keyword">val</span> mknoloc : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-loc">loc</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mkloc"><a href="#val-mkloc" class="anchor"></a><code><span><span class="keyword">val</span> mkloc : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-loc">loc</a></span></span></code></div></div><h2 id="input-info"><a href="#input-info" class="anchor"></a>Input info</h2><div class="odoc-spec"><div class="spec value anchored" id="val-input_name"><a href="#val-input_name" class="anchor"></a><code><span><span class="keyword">val</span> input_name : <span>string <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input_lexbuf"><a href="#val-input_lexbuf" class="anchor"></a><code><span><span class="keyword">val</span> input_lexbuf : <span><span><a href="../Stdlib/Lexing/index.html#type-lexbuf">Stdlib.Lexing.lexbuf</a> option</span> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input_phrase_buffer"><a href="#val-input_phrase_buffer" class="anchor"></a><code><span><span class="keyword">val</span> input_phrase_buffer : <span><span><a href="../Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a> option</span> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code></div></div><h2 id="toplevel-specific-functions"><a href="#toplevel-specific-functions" class="anchor"></a>Toplevel-specific functions</h2><div class="odoc-spec"><div class="spec value anchored" id="val-echo_eof"><a href="#val-echo_eof" class="anchor"></a><code><span><span class="keyword">val</span> echo_eof : <span>unit <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-reset"><a href="#val-reset" class="anchor"></a><code><span><span class="keyword">val</span> reset : <span>unit <span class="arrow">-></span></span> unit</span></code></div></div><h2 id="printing-locations"><a href="#printing-locations" class="anchor"></a>Printing locations</h2><div class="odoc-spec"><div class="spec value anchored" id="val-rewrite_absolute_path"><a href="#val-rewrite_absolute_path" class="anchor"></a><code><span><span class="keyword">val</span> rewrite_absolute_path : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>rewrite absolute path to honor the BUILD_PATH_PREFIX_MAP variable (https://reproducible-builds.org/specs/build-path-prefix-map/) if it is set.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-absolute_path"><a href="#val-absolute_path" class="anchor"></a><code><span><span class="keyword">val</span> absolute_path : <span>string <span class="arrow">-></span></span> string</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-show_filename"><a href="#val-show_filename" class="anchor"></a><code><span><span class="keyword">val</span> show_filename : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>In -absname mode, return the absolute path for this filename. Otherwise, returns the filename unchanged.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print_filename"><a href="#val-print_filename" class="anchor"></a><code><span><span class="keyword">val</span> print_filename : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print_loc"><a href="#val-print_loc" class="anchor"></a><code><span><span class="keyword">val</span> print_loc : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print_locs"><a href="#val-print_locs" class="anchor"></a><code><span><span class="keyword">val</span> print_locs : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><span><a href="#type-t">t</a> list</span> <span class="arrow">-></span></span> unit</span></code></div></div><h2 id="toplevel-specific-location-highlighting"><a href="#toplevel-specific-location-highlighting" class="anchor"></a>Toplevel-specific location highlighting</h2><div class="odoc-spec"><div class="spec value anchored" id="val-highlight_terminfo"><a href="#val-highlight_terminfo" class="anchor"></a><code><span><span class="keyword">val</span> highlight_terminfo :
|
||
<span><a href="../Stdlib/Lexing/index.html#type-lexbuf">Stdlib.Lexing.lexbuf</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||
<span><span><a href="#type-t">t</a> list</span> <span class="arrow">-></span></span>
|
||
unit</span></code></div></div><h2 id="reporting-errors-and-warnings"><a href="#reporting-errors-and-warnings" class="anchor"></a>Reporting errors and warnings</h2><h3 id="the-type-of-reports-and-report-printers"><a href="#the-type-of-reports-and-report-printers" class="anchor"></a>The type of reports and report printers</h3><div class="odoc-spec"><div class="spec type anchored" id="type-msg"><a href="#type-msg" class="anchor"></a><code><span><span class="keyword">type</span> msg</span><span> = <span><span>(<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> unit)</span> <a href="#type-loc">loc</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-msg"><a href="#val-msg" class="anchor"></a><code><span><span class="keyword">val</span> msg : <span>?loc:<a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span><span>(<span class="type-var">'a</span>, <a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <a href="#type-msg">msg</a>)</span> <a href="../Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-report_kind"><a href="#type-report_kind" class="anchor"></a><code><span><span class="keyword">type</span> report_kind</span><span> = </span></code><ol><li id="type-report_kind.Report_error" class="def variant constructor anchored"><a href="#type-report_kind.Report_error" class="anchor"></a><code><span>| </span><span><span class="constructor">Report_error</span></span></code></li><li id="type-report_kind.Report_warning" class="def variant constructor anchored"><a href="#type-report_kind.Report_warning" class="anchor"></a><code><span>| </span><span><span class="constructor">Report_warning</span> <span class="keyword">of</span> string</span></code></li><li id="type-report_kind.Report_warning_as_error" class="def variant constructor anchored"><a href="#type-report_kind.Report_warning_as_error" class="anchor"></a><code><span>| </span><span><span class="constructor">Report_warning_as_error</span> <span class="keyword">of</span> string</span></code></li><li id="type-report_kind.Report_alert" class="def variant constructor anchored"><a href="#type-report_kind.Report_alert" class="anchor"></a><code><span>| </span><span><span class="constructor">Report_alert</span> <span class="keyword">of</span> string</span></code></li><li id="type-report_kind.Report_alert_as_error" class="def variant constructor anchored"><a href="#type-report_kind.Report_alert_as_error" class="anchor"></a><code><span>| </span><span><span class="constructor">Report_alert_as_error</span> <span class="keyword">of</span> string</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-report"><a href="#type-report" class="anchor"></a><code><span><span class="keyword">type</span> report</span><span> = </span><span>{</span></code><ol><li id="type-report.kind" class="def record field anchored"><a href="#type-report.kind" class="anchor"></a><code><span>kind : <a href="#type-report_kind">report_kind</a>;</span></code></li><li id="type-report.main" class="def record field anchored"><a href="#type-report.main" class="anchor"></a><code><span>main : <a href="#type-msg">msg</a>;</span></code></li><li id="type-report.sub" class="def record field anchored"><a href="#type-report.sub" class="anchor"></a><code><span>sub : <span><a href="#type-msg">msg</a> list</span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-report_printer"><a href="#type-report_printer" class="anchor"></a><code><span><span class="keyword">type</span> report_printer</span><span> = </span><span>{</span></code><ol><li id="type-report_printer.pp" class="def record field anchored"><a href="#type-report_printer.pp" class="anchor"></a><code><span>pp : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> <span class="arrow">-></span></span> unit;</span></code></li><li id="type-report_printer.pp_report_kind" class="def record field anchored"><a href="#type-report_printer.pp_report_kind" class="anchor"></a><code><span>pp_report_kind : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-report">report</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-report_kind">report_kind</a> <span class="arrow">-></span></span>
|
||
unit;</span></code></li><li id="type-report_printer.pp_main_loc" class="def record field anchored"><a href="#type-report_printer.pp_main_loc" class="anchor"></a><code><span>pp_main_loc : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit;</span></code></li><li id="type-report_printer.pp_main_txt" class="def record field anchored"><a href="#type-report_printer.pp_main_txt" class="anchor"></a><code><span>pp_main_txt : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-report">report</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||
<span><span>(<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||
unit;</span></code></li><li id="type-report_printer.pp_submsgs" class="def record field anchored"><a href="#type-report_printer.pp_submsgs" class="anchor"></a><code><span>pp_submsgs : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-report">report</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||
<span><span><a href="#type-msg">msg</a> list</span> <span class="arrow">-></span></span>
|
||
unit;</span></code></li><li id="type-report_printer.pp_submsg" class="def record field anchored"><a href="#type-report_printer.pp_submsg" class="anchor"></a><code><span>pp_submsg : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-msg">msg</a> <span class="arrow">-></span></span> unit;</span></code></li><li id="type-report_printer.pp_submsg_loc" class="def record field anchored"><a href="#type-report_printer.pp_submsg_loc" class="anchor"></a><code><span>pp_submsg_loc : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-report">report</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
unit;</span></code></li><li id="type-report_printer.pp_submsg_txt" class="def record field anchored"><a href="#type-report_printer.pp_submsg_txt" class="anchor"></a><code><span>pp_submsg_txt : <span><a href="#type-report_printer">report_printer</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-report">report</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||
<span><span>(<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||
unit;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>A printer for <code>report</code>s, defined using open-recursion. The goal is to make it easy to define new printers by re-using code from existing ones.</p></div></div><h3 id="report-printers-used-in-the-compiler"><a href="#report-printers-used-in-the-compiler" class="anchor"></a>Report printers used in the compiler</h3><div class="odoc-spec"><div class="spec value anchored" id="val-batch_mode_printer"><a href="#val-batch_mode_printer" class="anchor"></a><code><span><span class="keyword">val</span> batch_mode_printer : <a href="#type-report_printer">report_printer</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-terminfo_toplevel_printer"><a href="#val-terminfo_toplevel_printer" class="anchor"></a><code><span><span class="keyword">val</span> terminfo_toplevel_printer : <span><a href="../Stdlib/Lexing/index.html#type-lexbuf">Stdlib.Lexing.lexbuf</a> <span class="arrow">-></span></span> <a href="#type-report_printer">report_printer</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-best_toplevel_printer"><a href="#val-best_toplevel_printer" class="anchor"></a><code><span><span class="keyword">val</span> best_toplevel_printer : <span>unit <span class="arrow">-></span></span> <a href="#type-report_printer">report_printer</a></span></code></div><div class="spec-doc"><p>Detects the terminal capabilities and selects an adequate printer</p></div></div><h3 id="printing-a-report"><a href="#printing-a-report" class="anchor"></a>Printing a <code>report</code></h3><div class="odoc-spec"><div class="spec value anchored" id="val-print_report"><a href="#val-print_report" class="anchor"></a><code><span><span class="keyword">val</span> print_report : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Display an error or warning report.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-report_printer"><a href="#val-report_printer" class="anchor"></a><code><span><span class="keyword">val</span> report_printer : <span><span>(<span>unit <span class="arrow">-></span></span> <a href="#type-report_printer">report_printer</a>)</span> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p>Hook for redefining the printer of reports.</p><p>The hook is a <code>unit -> report_printer</code> and not simply a <code>report_printer</code>: this is useful so that it can detect the type of the output (a file, a terminal, ...) and select a printer accordingly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-default_report_printer"><a href="#val-default_report_printer" class="anchor"></a><code><span><span class="keyword">val</span> default_report_printer : <span>unit <span class="arrow">-></span></span> <a href="#type-report_printer">report_printer</a></span></code></div><div class="spec-doc"><p>Original report printer for use in hooks.</p></div></div><h2 id="reporting-warnings"><a href="#reporting-warnings" class="anchor"></a>Reporting warnings</h2><h3 id="converting-a-warnings.t-into-a-report"><a href="#converting-a-warnings.t-into-a-report" class="anchor"></a>Converting a <code>Warnings.t</code> into a <code>report</code></h3><div class="odoc-spec"><div class="spec value anchored" id="val-report_warning"><a href="#val-report_warning" class="anchor"></a><code><span><span class="keyword">val</span> report_warning : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-t">Warnings.t</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> option</span></span></code></div><div class="spec-doc"><p><code>report_warning loc w</code> produces a report for the given warning <code>w</code>, or <code>None</code> if the warning is not to be printed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-warning_reporter"><a href="#val-warning_reporter" class="anchor"></a><code><span><span class="keyword">val</span> warning_reporter : <span><span>(<span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-t">Warnings.t</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> option</span>)</span> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p>Hook for intercepting warnings.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-default_warning_reporter"><a href="#val-default_warning_reporter" class="anchor"></a><code><span><span class="keyword">val</span> default_warning_reporter : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-t">Warnings.t</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> option</span></span></code></div><div class="spec-doc"><p>Original warning reporter for use in hooks.</p></div></div><h3 id="printing-warnings"><a href="#printing-warnings" class="anchor"></a>Printing warnings</h3><div class="odoc-spec"><div class="spec value anchored" id="val-formatter_for_warnings"><a href="#val-formatter_for_warnings" class="anchor"></a><code><span><span class="keyword">val</span> formatter_for_warnings : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print_warning"><a href="#val-print_warning" class="anchor"></a><code><span><span class="keyword">val</span> print_warning : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-t">Warnings.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Prints a warning. This is simply the composition of <code>report_warning</code> and <code>print_report</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-prerr_warning"><a href="#val-prerr_warning" class="anchor"></a><code><span><span class="keyword">val</span> prerr_warning : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-t">Warnings.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Same as <code>print_warning</code>, but uses <code>!formatter_for_warnings</code> as output formatter.</p></div></div><h2 id="reporting-alerts"><a href="#reporting-alerts" class="anchor"></a>Reporting alerts</h2><h3 id="converting-an-alert.t-into-a-report"><a href="#converting-an-alert.t-into-a-report" class="anchor"></a>Converting an <code>Alert.t</code> into a <code>report</code></h3><div class="odoc-spec"><div class="spec value anchored" id="val-report_alert"><a href="#val-report_alert" class="anchor"></a><code><span><span class="keyword">val</span> report_alert : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-alert">Warnings.alert</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> option</span></span></code></div><div class="spec-doc"><p><code>report_alert loc w</code> produces a report for the given alert <code>w</code>, or <code>None</code> if the alert is not to be printed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-alert_reporter"><a href="#val-alert_reporter" class="anchor"></a><code><span><span class="keyword">val</span> alert_reporter : <span><span>(<span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-alert">Warnings.alert</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> option</span>)</span> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p>Hook for intercepting alerts.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-default_alert_reporter"><a href="#val-default_alert_reporter" class="anchor"></a><code><span><span class="keyword">val</span> default_alert_reporter : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-alert">Warnings.alert</a> <span class="arrow">-></span></span> <span><a href="#type-report">report</a> option</span></span></code></div><div class="spec-doc"><p>Original alert reporter for use in hooks.</p></div></div><h3 id="printing-alerts"><a href="#printing-alerts" class="anchor"></a>Printing alerts</h3><div class="odoc-spec"><div class="spec value anchored" id="val-print_alert"><a href="#val-print_alert" class="anchor"></a><code><span><span class="keyword">val</span> print_alert : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-alert">Warnings.alert</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Prints an alert. This is simply the composition of <code>report_alert</code> and <code>print_report</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-prerr_alert"><a href="#val-prerr_alert" class="anchor"></a><code><span><span class="keyword">val</span> prerr_alert : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../Warnings/index.html#type-alert">Warnings.alert</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Same as <code>print_alert</code>, but uses <code>!formatter_for_warnings</code> as output formatter.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-deprecated"><a href="#val-deprecated" class="anchor"></a><code><span><span class="keyword">val</span> deprecated : <span>?def:<a href="#type-t">t</a> <span class="arrow">-></span></span> <span>?use:<a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Prints a deprecation alert.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-alert"><a href="#val-alert" class="anchor"></a><code><span><span class="keyword">val</span> alert : <span>?def:<a href="#type-t">t</a> <span class="arrow">-></span></span> <span>?use:<a href="#type-t">t</a> <span class="arrow">-></span></span> <span>kind:string <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Prints an arbitrary alert.</p></div></div><h2 id="reporting-errors"><a href="#reporting-errors" class="anchor"></a>Reporting errors</h2><div class="odoc-spec"><div class="spec type anchored" id="type-error"><a href="#type-error" class="anchor"></a><code><span><span class="keyword">type</span> error</span><span> = <a href="#type-report">report</a></span></code></div><div class="spec-doc"><p>An <code>error</code> is a <code>report</code> which <code>report_kind</code> must be <code>Report_error</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-error"><a href="#val-error" class="anchor"></a><code><span><span class="keyword">val</span> error : <span>?loc:<a href="#type-t">t</a> <span class="arrow">-></span></span> <span>?sub:<span><a href="#type-msg">msg</a> list</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <a href="#type-error">error</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-errorf"><a href="#val-errorf" class="anchor"></a><code><span><span class="keyword">val</span> errorf :
|
||
<span>?loc:<a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span>?sub:<span><a href="#type-msg">msg</a> list</span> <span class="arrow">-></span></span>
|
||
<span><span><span>(<span class="type-var">'a</span>, <a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <a href="#type-error">error</a>)</span> <a href="../Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">-></span></span>
|
||
<span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-error_of_printer"><a href="#val-error_of_printer" class="anchor"></a><code><span><span class="keyword">val</span> error_of_printer :
|
||
<span>?loc:<a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span>?sub:<span><a href="#type-msg">msg</a> list</span> <span class="arrow">-></span></span>
|
||
<span><span>(<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||
<span><span class="type-var">'a</span> <span class="arrow">-></span></span>
|
||
<a href="#type-error">error</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-error_of_printer_file"><a href="#val-error_of_printer_file" class="anchor"></a><code><span><span class="keyword">val</span> error_of_printer_file :
|
||
<span><span>(<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||
<span><span class="type-var">'a</span> <span class="arrow">-></span></span>
|
||
<a href="#type-error">error</a></span></code></div></div><h2 id="automatically-reporting-errors-for-raised-exceptions"><a href="#automatically-reporting-errors-for-raised-exceptions" class="anchor"></a>Automatically reporting errors for raised exceptions</h2><div class="odoc-spec"><div class="spec value anchored" id="val-register_error_of_exn"><a href="#val-register_error_of_exn" class="anchor"></a><code><span><span class="keyword">val</span> register_error_of_exn : <span><span>(<span>exn <span class="arrow">-></span></span> <span><a href="#type-error">error</a> option</span>)</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>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 <code>register_error_of_exn</code>. The result of the printer is an <code>error</code> value containing a location, a message, and optionally sub-messages (each of them being located as well).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-error_of_exn"><a href="#val-error_of_exn" class="anchor"></a><code><span><span class="keyword">val</span> error_of_exn : <span>exn <span class="arrow">-></span></span> <span><span>[ <span>`Ok of <a href="#type-error">error</a></span> <span>| `Already_displayed</span> ]</span> option</span></span></code></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Error"><a href="#exception-Error" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Error</span> <span class="keyword">of</span> <a href="#type-error">error</a></span></code></div><div class="spec-doc"><p>Raising <code>Error e</code> signals an error <code>e</code>; the exception will be caught and the error will be printed.</p></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Already_displayed_error"><a href="#exception-Already_displayed_error" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Already_displayed_error</span></span></code></div><div class="spec-doc"><p>Raising <code>Already_displayed_error</code> signals an error which has already been printed. The exception will be caught, but nothing will be printed</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-raise_errorf"><a href="#val-raise_errorf" class="anchor"></a><code><span><span class="keyword">val</span> raise_errorf :
|
||
<span>?loc:<a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span>?sub:<span><a href="#type-msg">msg</a> list</span> <span class="arrow">-></span></span>
|
||
<span><span><span>(<span class="type-var">'a</span>, <a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span class="type-var">'b</span>)</span> <a href="../Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">-></span></span>
|
||
<span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-report_exception"><a href="#val-report_exception" class="anchor"></a><code><span><span class="keyword">val</span> report_exception : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span>exn <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Reraise the exception if it is unknown.</p></div></div></div></body></html> |