u!LF-55.5.0+dev0-2025-04-28/(Location!tA;@@)loc_start@@&Stdlib&Lexing(position@@@ ˰:../../parsing/location.mliZZ@@(LocationA@'loc_end@@&Stdlib&Lexing(position@@@ ΰ[[7@@B@)loc_ghost@@$bool@@@ Ѱ"\8:#\8J@@!C@@@A(Warnings#loc@@@@@@@/Y0]KN@@@@.@@A@$none(Location!t@@@:@@~ ; ;A~ ; G@@?D@@'is_none@(Location!t@@@;7@@@<@@=@XA  YA  @@WE@@'in_file @&string@@@>(Location!t@@@?@@@@qD  rD  @@pF@@$init @&Stdlib&Lexing&lexbuf@@@A@%@@@B$unit@@@C@@D@@E@G : :G : d@@G@@$curr @&Stdlib&Lexing&lexbuf@@@F(Location!t@@@G@@H@K  K  @@H@@+symbol_rloc @.@@@I(Location!t@@@J@@K@N % %N % ?@@I@@+symbol_gloc @F@@@L(Location!t@@@M@@N@O @ @O @ Z@@J@@'rhs_loc@#int@@@O(Location!t@@@P@@Q@S  S  @@K@@,rhs_interval@@@@R@ @@@S(Location!t@@@T@@U@@V@U  U @@L@@,get_pos_info@&Stdlib&Lexing(position@@@W@@@@X@M@@@Y@T@@@Z@@[@@\@DW  EW A@@CM@@#locB;!a@^@A#txt@@ C@_Y[kmZ[kv@@XO@#loc@@(Location!t@@@ci\wyj\w@@hP@@@A@Y@@@@@oZ[[p]@@@@nN@A@'mknoloc@!a@wC@r(Location#loc@@@t@@u@__@@Q@@%mkloc@!a@C@x@(Location!t@@@y(Location#loc@@@{@@|@@}@``@@R@@*input_name&Stdlib#ref[@@@@@@@ee@@S@@,input_lexbuf&Stdlib#ref&optionL&Stdlib&Lexing&lexbuf@@@@@@@@@@ff@@T@@3input_phrase_bufferA&Stdlib#ref#&Stdlib&Buffer!t@@@.@@@0@@@2@m m>@@U@@(echo_eofB@@@@3@@@4@@5@riiri@@V@@%resetC@@@@6@@@7@@8@2s3s@@1W@@5rewrite_absolute_pathD@@@@9@@@:@@;@GxHx@@FX@@;rewrite_find_first_existingE@@@@<@@@=@@@?@@@@ab@@`Y@@>rewrite_find_all_existing_dirsF@ @@@A$list͠@@@B@@@D@@E@}~;@@|Z@@-absolute_pathG@%@@@F*@@@G@@H@@@[@@-show_filenameH@:@@@I?@@@J@@K@333V@@\@@.print_filenameI@&Stdlib&Format)formatter@@@L@[@@@M6@@@N@@O@@P@@@]@@)print_locJ@&Stdlib&Format)formatter@@@Q@(Location!t@@@RZ@@@S@@T@@U@)@@^@@*print_locsK@&Stdlib&Format)formatter@@@V@ڠ(Location!t@@@W@@@Y@@@Z@@[@@\@***U@@_@@4separate_new_messageL@&Stdlib&Format)formatter@@@]@@@^@@_@0VV1V@@/`@@ӱ#DocC@4separate_new_message*Format_doc'printer@@@@@@@MN@@La@@(filename*Format_doc'printer@@@@@@@de@@cb@@/quoted_filename*Format_doc'printer@@@@@@@{|!@@zc@@#loc*Format_doc'printer(Location!t@@@@@@@"$"A@@d@@$locs*Format_doc'printer5(Location!t@@@@@@@@@@BDBg@@e@@@@hk@f@@@2highlight_terminfo@&Stdlib&Lexing&lexbuf@@@@&Stdlib&Format)formatter@@@@k(Location!t@@@@@@]@@@@@@@@@@@@g@@#msgD;@@@A(Location#loc*Format_doc!t@@@@@@@@@@  H H  H c@@@@ h@A@#msg#locC(Location!t@@@h@@@s@&Stdlib'format4!a@vE@i*Format_doc)formatter@@@j@@@k(Location#msg@@@l@@@q@@r@@t@N e eO e @@Mn@@+report_kindE;@@,Report_errorĐ@@]  ^  @@\p@.Report_warningŐ@@@w@@l  m  @@kq@7Report_warning_as_errorƐ@@@x@@{  | !@@zr@,Report_alertǐ"@@@y@@!!!!.@@s@5Report_alert_as_errorȐ1@@@z@@!/!1!/!R@@t@@@A@@@@@  @@@@o@A@&reportF;@@$kind@@(Location+report_kind@@@!d!f!d!y@@v@$main@@(Location#msg@@@!z!|!z!@@w@#sub@@Y(Location#msg@@@@@@!!!!@@x@(footnote@@ *Format_doc!t@@@@@@!!!!@@y@@@A@@@@@!T!T!!@@@@u@A@.report_printerG;@@"pp@@@(Location.report_printer@@@@&Stdlib&Format)formatter@@@@(Location&report@@@@@@@@@@@@$!!%""-@@#{@.pp_report_kind@@@(Location.report_printer@@@@(Location&report@@@@&Stdlib&Format)formatter@@@@(Location+report_kind@@@@@@@@@@@@@@ð["/"1\"^"@@Z|@+pp_main_loc@@@(Location.report_printer@@@@(Location&report@@@@&Stdlib &Format)formatter@@@@(Location !t@@@ @@@@@@@@@@@ΰ""""@@}@+pp_main_txt@@@(Location .report_printer@@@@(Location &report@@@@&Stdlib&Format)formatter@@@@*Format_doc!t@@@7@@@@@@@@@@@ٰ""##3@@~@*pp_submsgs@@@(Location.report_printer@@@@(Location&report@@@@&Stdlib&Format)formatter@@@@(Location#msg@@@@@@t@@@@@@@@@@@#4#6#_#@@@)pp_submsg@@@(Location.report_printer@@@@(Location&report@@@@&Stdlib&Format)formatter@@@@(Location#msg@@@@@@@@@@@@@@=##>##@@<@@-pp_submsg_loc@@@(Location.report_printer@@@@(Location&report@@@@&Stdlib&Format)formatter@@@@(Location!t@@@ @@@@@@@@@@@t##u$$(@@sA@-pp_submsg_txt@@@(Location!.report_printer@@@@(Location"&report@@@@&Stdlib#&Format)formatter@@@@*Format_doc$!t@@@%@@@@@@@@@@@$)$+$W$@@B@@@A@@@@@!!$$@@@@z@A@2batch_mode_printer|(Location&.report_printer@@@@%W%W%W%}@@C@@9terminfo_toplevel_printer}@&Stdlib'&Lexing&lexbuf@@@(Location(.report_printer@@@@@@ %% %%@@D@@5best_toplevel_printer~@[)@@@(Location*.report_printer@@@@@@ %% %%@@E@@,print_report@&Stdlib+&Format)formatter@@@@(Location,&report@@@-@@@@@@@@&[&[&[&@@F@@.report_printer&Stdlib0#ref@.@@@(Location/.report_printer@@@@@@@@@:&&;&&@@9G@@6default_report_printer@1@@@(Location2.report_printer@@@@@@R''S'(@@QH@@.report_warning@(Location3!t@@@@(Warnings4!t@@@(Location5&report@@@@@@@@@@@|"((}"((@@{I@@0warning_reporter&Stdlib9#ref@(Location6!t@@@@(Warnings7!t@@@̠(Location8&report@@@@@@@@@@@@@@&)W)W&)W)@@J@@8default_warning_reporter@(Location:!t@@@@(Warnings;!t@@@(Location<&report@@@@@@@@@@@))))))@@K@@6formatter_for_warnings&Stdlib>#ref&Stdlib=&Format)formatter@@@@@@@.*M*M.*M*w@@L@@-print_warning@(Location?!t@@@@&Stdlib@&Format)formatter@@@@(WarningsA!t@@@B@@@@@@@@@@#0*y*y$0*y*@@"M@@-prerr_warning@(LocationC!t@@@@(WarningsD!t@@@E@@@@@@@@E4++F4++?@@DN@@,report_alert@(LocationF!t@@@@(WarningsG%alert@@@(LocationH&report@@@@@@@@@@@o<++p<+,#@@nO@@.alert_reporter&StdlibL#ref@(LocationI!t@@@@(WarningsJ%alert@@@(LocationK&report@@@@@@@@@@@@@@@,,@,,@@P@@6default_alert_reporter@(LocationM!t@@@@(WarningsN%alert@@@(LocationO&report@@@@@@@@@@@C--C--A@@Q@@+print_alert@(LocationP!t@@@@&StdlibQ&Format)formatter@@@@(WarningsR%alert@@@hS@@@@@@@@@@H--H--@@R@@+prerr_alert@(LocationT!t@@@@(WarningsU%alert@@@V@@@@@@@@ L.+.+ L.+.W@@ S@@*deprecated#def(LocationW!t@@@@@@#use!(LocationX!t@@@@@@@(LocationY!t@@@@Z@@@[@@@@@@@@@@@@ [P.. \P..@@ ZT@@%alert#defP(Location\!t@@@@@@ #use`(Location]!t@@@@@@$kind %^@@@@(Location_!t@@@@ 6`@@@ a@@@@@@@@@@@@@ @ S// S//O@@ U@@2auto_include_alert@ Kb@@@  &c@@@ @@ @ V/s/s V/s/@@ V@@7deprecated_script_alert@ `d@@@ ;e@@@@@@ Z// Z/0@@ W@@%errorH;@@A(Locationf&report@@@@@@@ `00 `00@@@@ X@A@+delayed_msgI;@@A@ ^g@@@*Format_doch!t@@@@@@@@@@@@ c11 c11K@@@@ Y@A@%error#loc(Locationi!t@@@2@@@>#subk(Locationj#msg@@@3@@@5@@@<(footnote(Locationl+delayed_msg@@@6@@@:@ m@@@7(Locationn%error@@@8@@9@@;@@=@@?@ Ke1M1M Le1M1@@ JZ@@&errorf#loc@(Locationo!t@@@@@@@S#subPq(Locationp#msg@@@A@@@C@@@Q(footnotef(Locationr+delayed_msg@@@D@@@O@&Stdlibv'format4!a@VJ@E*Format_docs)formatter@@@F t@@@G(Locationu%error@@@H@@@M@@N@@P@@R@@T@ g11 h12@@ [@@2aligned_error_hint#loc(Locationw!t@@@W@@@n#subby(Locationx#msg@@@X@@@Z@@@l(footnoteΠ(Locationz+delayed_msg@@@[@@@j@&Stdlib'format4!a@qJ@\*Format_doc{)formatter@@@] |@@@^@ ?*Format_doc}!t@@@_@@@a(Location~%error@@@b@@c@@@h.@@i@@k@@m@@o@ *j22 +l2d2@@ )\@@0error_of_printer#loc(Location!t@@@r@@@#sub/(Location#msg@@@s@@@u@@@(footnoteE(Location+delayed_msg@@@v@@@@@*Format_doc)formatter@@@w@!a@J@x @@@y@@z@@{@ (Location%error@@@|@@}@@~@@@@@@@ q33 r34 @@ ]@@5error_of_printer_file@@*Format_doc)formatter@@@@!a@J@ @@@@@@@@ (Location%error@@@@@@@@ t4"4" t4"4p@@ ^@@5register_error_of_exn@@#exn@@@ (Location%error@@@@@@@@ K@@@@@@ y44 y44@@ _@@,error_of_exn@#@@@ Р"Ok(Location%error@@@1Already_displayed@@@@A@@@@@@@@@ 6Q6Q 6Q6@@ `@@±%ErrorJ#IG@(Location%error@@@@@A 66 66@@ a@B@±7Already_displayed_errorK#@@@A &7 7  '7 7A@@ %b@B@,raise_errorf#loc(Location!t@@@@@@#sub+ (Location#msg@@@@@@@@@(footnoteA(Location+delayed_msg@@@@@@@&Stdlib'format4!a@L@*Format_doc)formatter@@@ @@@!b@L@@@@@@@@@@@@@ 77 8 8T@@ c@@0report_exception@&Stdlib&Format)formatter@@@@@@@ @@@@@@@@ 8V8V 8V8@@ d@@@3 ?Source code locations (ranges of positions), used in parsetree.@# (Warning:@ ' this module is unstable and part of -Compiler_libs@-compiler-libs@!.@@@@@@@@@@@@A ː#*Location.t3!t 5 represents a range of characters in the source code.@  loc_ghost=false whenever the AST described by the location can be parsed from the location. In all other cases, loc_ghost must be true. Most locations produced by the parser have loc_ghost=false. When loc_ghost=true, the location is usually a best effort approximation.@ This info is used by tools like merlin that want to relate source code with parsetrees or later asts. ocamlprof skips instrumentation of ghost nodes.@ ( Example: in `let f x = x`, we have: *a structure item at location "let f x = x"@=a pattern "f" at location "f"@ Ban expression "fun x -> x" at location "x = x" with loc_ghost=true@=a pattern "x" at location "x"@ |an expression "x" at location "x" In this case, every node has loc_ghost=false, except the node "fun x -> x", since .Parser.expression (Lexing.from_string "x = x") _ would fail to parse. By contrast, in `let f = fun x -> x`, every node has loc_ghost=false.@@ Line directives can modify the filenames and line numbers arbitrarily, which is orthogonal to loc_ghost, which describes the range of characters from loc_start.pos_cnum to loc_end.pos_cnum in the parsed string.@@@@@@@@@@@@@ @@ @ @@ @ @@ @@A @  @@ 9Note on the use of Lexing.position in this module. If .pos_fname = ""+, then use +!input_name0 instead. If -pos_lnum = -1', then +pos_bol = 0&. Use (pos_cnum b and re-parse the file to get the line and character numbers. Else all fields are correct.@-Location.none3;An arbitrary value of type !t !; describes an empty ghost range.@@@@@@@@@@@@ @@@@ 0Location.is_none3)True for -Location.none:, false any other location@@@@@@@@@@@@ @  @@@@ 0Location.in_file3 4Return an empty ghost range located in a given file.@@@@@@@@@@@@ @ @@@@ -Location.init3 )Set the file name and line number of the &lexbuf ' to be the start of the named file.@@@@@@@@@@@@ @% @( @@@@ -Location.curr3 /Get the location of the current token from the &lexbuf!.@@@@@@@@@@@@ @= @@@@ 頕4Location.symbol_rloc@ @F @@@@ ڠ4Location.symbol_gloc@ @O @@@@ ˠ0Location.rhs_loc3)rhs_loc n 0 returns the location of the symbol at position !n ., starting at 1, in the current parser rule.@@@@@@@@@@@@ @g @@@@ ʠ5Location.rhs_interval@ @p @s @@@@ 5Location.get_pos_info30file, line, char@@@@@@@@@@@@ @ @@@@ #,Location.loc@ Y@ @@ @ @@ @@A@@ | {@@0Location.mknoloc@ x@ y@@@@ l.Location.mkloc@ g@ h@ c@@@@ TA@*Input info@@3Location.input_name@ V@@@@ J5Location.input_lexbuf@ E@@@@ -Location.rewrite_absolute_path3:rewrite_absolute_path path* rewrites $path ] to honor the BUILD_PATH_PREFIX_MAP variable if it is set. It does not check whether $path 2 is absolute or not. The result is as follows: 1If BUILD_PATH_PREFIX_MAP is not set, just return $path!.@ hotherwise, rewrite using the mapping (and if there are no matching prefixes that will just return $path").@@- See > https://reproducible-builds.org/specs/build-path-prefix-map/ # the BUILD_PATH_PREFIX_MAP spec@@@@@@@@@@@@@ 7@ 8@@@@ 0 $Location.rewrite_find_first_existing3 rewrite_find_first_existing path uses a BUILD_PATH_PREFIX_MAP mapping and tries to find a source in mapping that maps to a result that exists in the file system. There are the following return values:$None5, means either %BUILD_PATH_PREFIX_MAP is not set and $path4 does not exists, or@6no source prefixes of $path; in the mapping were found,@@@+Some target(, means &target9 exists and either %BUILD_PATH_PREFIX_MAP is not set and &target# = $path$, or@&target 9 is the first file (in priority order) that $path * mapped to that exists in the file system.@@@)Not_found M raised, means some source prefixes in the map were found that matched $path , but none of them existed in the file system. The caller should catch this and issue an appropriate error message.@@- See > https://reproducible-builds.org/specs/build-path-prefix-map/ # the BUILD_PATH_PREFIX_MAP spec@@@@@@@@@@@@@ @ @@@@ 'Location.rewrite_find_all_existing_dirs3 "rewrite_find_all_existing_dirs dir 1 accumulates a list of existing directories, $dirs G, that are the result of mapping a potentially abstract directory, #dir e, over all the mapping pairs in the BUILD_PATH_PREFIX_MAP environment variable, if any. The list $dirs : will be in priority order (head as highest priority).@> The possible results are:"[]5, means either %BUILD_PATH_PREFIX_MAP is not set and #dir ' is not an existing directory, or@ 0if set, then there were no matching prefixes of #dir!.@@@)Some dirs 5, means dirs are the directories found. Either %BUILD_PATH_PREFIX_MAP is not set and ,dirs = [dir]$, or@/it was set and $dirs % are the mapped existing directories.@@@ VNot_found raised, means some source prefixes in the map were found that matched #dir , but none of mapping results were existing directories (possibly due to misconfiguration). The caller should catch this and issue an appropriate error message.@@- See > https://reproducible-builds.org/specs/build-path-prefix-map/ # the BUILD_PATH_PREFIX_MAP spec@@@@@@@@@@@@@ @ @@@@ 䠕6Location.absolute_path32absolute_path path? first makes an absolute path, !s& from $path 3, prepending the current working directory if $path9 was relative. Then !s4 is rewritten using 5rewrite_absolute_path I. Finally the result is normalized by eliminating instances of #'.'$ or $'..'!.@@@@@@@@@@@@ @A @@@@ A@2Printing locations@@6Location.show_filename3 pIn -absname mode, return the absolute path for this filename. Otherwise, returns the filename unchanged.@@@@@@@@@@@@ @W @@@@ 7Location.print_filename@ @` @c @@@@ 2Location.print_loc@ @l @o @@@@ ߠ3Location.print_locs@ @x @{ @@@@ =Location.separate_new_message@ @ @@@@ /,Location.Doc @A␠ !Location.Doc.separate_new_message@ @@@@ 5Location.Doc.filename@ @@@@ @@@@ -A@=Reporting errors and warnings@@B@ 'The type of reports and report printers@@#,Location.msg@@@A 6@ ' &@@,Location.msg@ #@ # "@ @@@@ #4Location.report_kind@@ @@@ 呠 @@@ ڑ @@@ ϑ @@@ đ @@@@A@@  @@#/Location.report@@ @@ @ @@ @ @@ @ @@ @@A@@ x w@@#7Location.report_printer3.A printer for &report s, defined using open-recursion. The goal is to make it easy to define new printers by re-using code from existing ones.@@@@@@@@@@@@@ @@ ~@ T@@ S@ @@ @ @@ @ @@ @ z@@ y@ E@@ D@ @@ @@A@@  @@B@ $Report printers used in the compiler@@;Location.batch_mode_printer@ @@@@ ۠ "Location.terminfo_toplevel_printer@ @H @@@@ Ǡ>Location.best_toplevel_printer3 ADetects the terminal capabilities and selects an adequate printer@@@@@@@@@@@@ @W @@@@ B@+Printing a &report@@5Location.print_report3 #Display an error or warning report.@@@@@@@@@@@@ @p @s @@@@ 7Location.report_printer3 +Hook for redefining the printer of reports.@3 The hook is a 6unit -> report_printer2 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.@@@@@@@@@@@@ @@@@ ?Location.default_report_printer3 )Original report printer for use in hooks.@@@@@@@@@@@@ @ @@@@ A@2Reporting warnings@@B@-Converting a *Warnings.t( into a &report@@7Location.report_warning34report_warning loc w ) produces a report for the given warning !w(, or $None % if the warning is not to be printed.@@@@@@@@@@@@ @ @ @@@@ 9Location.warning_reporter3?Hook for intercepting warnings.@@@@@@@@@@@@ @@@@ !Location.default_warning_reporter3 +Original warning reporter for use in hooks.@@@@@@@@@@@@ @ @ @@@@ wB@1Printing warnings@@?Location.formatter_for_warnings@ y@@@@ h6Location.print_warning3 4Prints a warning. This is simply the composition of .report_warning( and ,print_report!.@@@@@@@@@@@@ u@ v@ o@" f@@@@ [6Location.prerr_warning3(Same as -print_warning+, but uses 7!formatter_for_warnings8 as output formatter.@@@@@@@@@@@@ h@= i@@ b@@@@ WA@0Reporting alerts@@B@.Converting an 'Alert.t( into a &report@@5Location.report_alert32report_alert loc w ' produces a report for the given alert !w(, or $None # if the alert is not to be printed.@@@@@@@@@@@@ ~@u @x x@@@@ e7Location.alert_reporter3=Hook for intercepting alerts.@@@@@@@@@@@@ f@@@@ >?Location.default_alert_reporter3 )Original alert reporter for use in hooks.@@@@@@@@@@@@ ?@ @@ 9@@@@ &B@/Printing alerts@@4Location.print_alert3 3Prints an alert. This is simply the composition of ,report_alert( and ,print_report!.@@@@@@@@@@@@ :@ ;@ 4@ +@@@@ 4Location.prerr_alert3(Same as +print_alert+, but uses 7!formatter_for_warnings8 as output formatter.@@@@@@@@@@@@ -@ .@ '@@@@ 3Location.deprecated3;Prints a deprecation alert.@@@@@@@@@@@@ @  @  @ @@@@@.Location.alert3:Prints an arbitrary alert.@@@@@@@@@@@@@@@@ @@@@@Ƞ;Location.auto_include_alert3 NPrints an alert that -I +lib has been automatically added to the load path@@@@@@@@@@@@@@@@@  Location.deprecated_script_alert3?deprecated_script_alert command6 prints an alert that +command foo & has been deprecated in favour of -command ./foo@@@@@@@@@@@@@9@@@@ȠA@0Reporting errors@@#.Location.error3#An %error& is a &report' which +report_kind) must be ,Report_error!.@@@@@@@@@@@@@@A@@@#4Location.delayed_msg@@@A@@@.Location.error@@@@@@@@@/Location.errorf@@@@nm@b@@@@=;Location.aligned_error_hint3 ;aligned_error_hint ?loc ?sub ?footnote fmt ... aligned_hint 2 produces an error report where the potential ,aligned_hint h message has been aligned with the main error message before being added to the list of submessages.@@@@@@@@@@@@G@GF@:9@'&@@@@@砕9Location.error_of_printer@@@@@@@@@@>Location.error_of_printer_file@@@@@@@zA@ 4Automatically reporting errors for raised exceptions@@>Location.register_error_of_exn3 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 5register_error_of_exn &. The result of the printer is an %error r value containing a location, a message, and optionally sub-messages (each of them being located as well).@@@@@@@@@@@@@@@@@w5Location.error_of_exn@r@s@@@@V.Location.Error3(Raising 'Error e2 signals an error !e @; the exception will be caught and the error will be printed.@@@@@@@@@@@@a@@@@[Z@@ Location.Already_displayed_error3(Raising 7Already_displayed_error n signals an error which has already been printed. The exception will be caught, but nothing will be printed@@@@@@@@@@@@@@@@ed@@5Location.raise_errorf@a@a`@TS@A@@B5@@@@9Location.report_exception3 'Reraise the exception if it is unknown.@@@@@@@@@@@@@Q@T @@@@@@@@A(Warnings&Lexing*Format_doc&Format&Buffer@@@@@