{PJu55.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@@@u@@@@/Y0]KN@@@@.@@A@$none(Location!t@@@@@~ ; ;A~ ; G@@?D@@'is_none@(Location!t@@@@@9@@@@@@ZA  [A  @@YE@@'in_file @&string@@@@@(Location!t@@@@@@uD  vD  @@tF@@$init @&Stdlib&Lexing&lexbuf@@@@@@)@@@@@$unit@@@@@@@@G : :G : d@@G@@$curr @&Stdlib&Lexing&lexbuf@@@@@(Location!t@@@@@@K  K  @@H@@+symbol_rloc @2@@@@@(Location!t@@@@@@N % %N % ?@@I@@+symbol_gloc @L@@@@@(Location!t@@@@@@O @ @O @ Z@@J@@'rhs_loc@#int@@@@@(Location!t@@@@@@ S   S  @@K@@,rhs_interval@@@@@@@$@@@@@(Location!t@@@@@@@@,U  -U @@+L@@,get_pos_info@&Stdlib&Lexing(position@@@@@@@@@@S@@@@Z@@@@@@@@ZW  [W A@@YM@@#locB;!a@@A#txt@@ C@o[kmp[kv@@nO@#loc@@(Location!t@@@İ\wy\w@@~P@@@A@Y@@@@@Z[[]@@@@N@A@'mknoloc@!a@C@@@(Location#loc@@@@@@__@@Q@@%mkloc@!a@C@@@@(Location!t@@@@@(Location#loc@@@@@@@@``@@R@@*input_name&Stdlib#refs@@@@@@@ee@@S@@,input_lexbuf&Stdlib#ref&optionL&Stdlib&Lexing&lexbuf@@@@@@@@@@ff@@T@@3input_phrase_bufferA&Stdlib#ref#&Stdlib&Buffer!t@@@6@@@8@@@:@$m%m>@@#U@@(echo_eofB@@@@;@@=@@@<@@>@;rii<ri@@:V@@%resetC@@@@?@@A@@@@@@B@RsSs@@QW@@5rewrite_absolute_pathD@@@@C@@E@@@D@@F@ixjx@@hX@@;rewrite_find_first_existingE@@@@G@@K@@@H@@@J@@L@@@Y@@>rewrite_find_all_existing_dirsF@+@@@M@@Q$list͠6@@@N@@@P@@R@;@@Z@@-absolute_pathG@I@@@S@@UN@@@T@@V@@@[@@-show_filenameH@`@@@W@@Ye@@@X@@Z@333V@@\@@.print_filenameI@&Stdlib&Format)formatter@@@[@@`@@@@\@@^\@@@]@@_@@a@@@]@@)print_locJ@&Stdlib&Format)formatter@@@b@@g@(Location!t@@@c@@e@@@d@@f@@h@)@@^@@*print_locsK@&Stdlib&Format)formatter@@@i@@p@ڠ(Location!t@@@j@@@l@@n@@@m@@o@@q@L**M*U@@K_@@4separate_new_messageL@&Stdlib&Format)formatter@@@r@@t@@@s@@u@hVViV@@g`@@ӱ#DocC@4separate_new_message*Format_doc'printer@@@b@@@d@@@a@@(filename*Format_doc'printer/@@@e@@@g@@@b@@/quoted_filename*Format_doc'printerF@@@h@@@j@!@@c@@#loc*Format_doc'printer(Location!t@@@k@@@m@"$"A@@d@@$locs*Format_doc'printerG(Location!t@@@n@@@p@@@r@BDBg@@e@@@@hk@f@@@2highlight_terminfo@&Stdlib&Lexing&lexbuf@@@s@@}@&Stdlib&Format)formatter@@@t@@{@(Location!t@@@u@@@w@@y@@@x@@z@@|@@~@-.@@,g@@#msgD;@@@A(Location#loc*Format_doc!t@@@@@@@@@@I H HJ H c@@@@Hh@A@#msg#locg(Location!t@@@@@@@@@&Stdlib'format4!a@E@*Format_doc)formatter@@@@@@(Location#msg@@@@@@@@@@@@@ e e e @@n@@+report_kindE;@@,Report_errorĐ@@    @@p@.Report_warningŐB@@@@@    @@q@7Report_warning_as_errorƐQ@@@@@   !@@r@,Report_alertǐ`@@@@@!!!!.@@s@5Report_alert_as_errorȐo@@@@@!/!1!/!R@@t@@@A@@@@@  @@@@o@A@&reportF;@@$kind@@(Location+report_kind@@@!d!f!d!y@@v@$main@@(Location#msg@@@!z!|!z!@@w@#sub@@u(Location#msg@@@@@@!!!!@@x@(footnote@@1*Format_doc!t@@@@@@/!!0!!@@.y@@@A@@@@@3!T!T4!!@@@@2u@A@.report_printerG;@@"pp@@@(Location.report_printer@@@@@@&Stdlib&Format)formatter@@@@@@(Location&report@@@@@@@@@@@@@@ݰl!!m""-@@k{@.pp_report_kind@@@(Location.report_printer@@@@@@(Location&report@@@@@@&Stdlib&Format)formatter@@@@@@(Location+report_kind@@@@@@@@@@@@@@@@"/"1"^"@@|@+pp_main_loc@@@(Location.report_printer@@@@@@(Location&report@@@@@@&Stdlib &Format)formatter@@@@@@(Location !t@@@@@P @@@@@@@@@@@""""@@}@+pp_main_txt@@@(Location .report_printer@@@@@ @(Location &report@@@@@@&Stdlib&Format)formatter@@@@@@*Format_doc!t@@@@@@@@@@@@@@@@ )""*##3@@(~@*pp_submsgs@@@(Location.report_printer@@@ @@@(Location&report@@@@@@&Stdlib&Format)formatter@@@@@@(Location#msg@@@@@@@@@@@@@@@@@@@n#4#6o#_#@@m@)pp_submsg@@@(Location.report_printer@@@@@)@(Location&report@@@@@'@&Stdlib&Format)formatter@@@ @@%@(Location#msg@@@!@@#@@@"@@$@@&@@(@@*####@@@@-pp_submsg_loc@@@(Location.report_printer@@@-@@8@(Location&report@@@.@@6@&Stdlib&Format)formatter@@@/@@4@(Location!t@@@0@@2R @@@1@@3@@5@@7@@9##$$(@@A@-pp_submsg_txt@@@(Location!.report_printer@@@<@@G@(Location"&report@@@=@@E@&Stdlib#&Format)formatter@@@>@@C@*Format_doc$!t@@@?@@A%@@@@@@B@@D@@F@@H+$)$+,$W$@@*B@@@A@@@@@/!!0$$@@@@.z@A@2batch_mode_printer|(Location&.report_printer@@@(@@%W%WA%W%}@@?C@@9terminfo_toplevel_printer}@&Stdlib'&Lexing&lexbuf@@@(@@((Location(.report_printer@@@(@@(@_ %%` %%@@^D@@5best_toplevel_printer~@)@@@(@@((Location*.report_printer@@@(@@(@y %%z %%@@xE@@,print_report@&Stdlib+&Format)formatter@@@(@@(@(Location,&report@@@(@@(-@@@(@@(@@(@&[&[&[&@@F@@.report_printer&Stdlib0#ref@!.@@@(@@((Location/.report_printer@@@(@@(@@@)@&&&&@@G@@6default_report_printer@<1@@@)@@)(Location2.report_printer@@@)@@)@'''(@@H@@.report_warning@(Location3!t@@@)@@) @(Warnings4!t@@@)@@) (Location5&report@@@)@@@) @@) @@) @ "(( "((@@ I@@0warning_reporter&Stdlib9#ref@(Location6!t@@@)@@)@(Warnings7!t@@@)@@)D(Location8&report@@@)@@@)@@)@@)@@@)@C&)W)WD&)W)@@BJ@@8default_warning_reporter@(Location:!t@@@)@@) @(Warnings;!t@@@)@@)s(Location<&report@@@)@@@)@@)@@)!@q)))r)))@@pK@@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*y0*y*@@M@@-prerr_warning@(LocationC!t@@@)/@@)4@(WarningsD!t@@@)0@@)2ME@@@)1@@)3@@)5@4++4++?@@N@@,report_alert@(LocationF!t@@@)6@@)=@(WarningsG%alert@@@)7@@);(LocationH&report@@@)8@@@):@@)<@@)>@ <++ <+,#@@ O@@.alert_reporter&StdlibL#ref@(LocationI!t@@@)?@@)F@(WarningsJ%alert@@@)@@@)DM(LocationK&report@@@)A@@@)C@@)E@@)G@@@)I@ L@,, M@,,@@ KP@@6default_alert_reporter@(LocationM!t@@@)J@@)Q@(WarningsN%alert@@@)K@@)O|(LocationO&report@@@)L@@@)N@@)P@@)R@ zC-- {C--A@@ yQ@@+print_alert@(LocationP!t@@@)S@@)[@&StdlibQ&Format)formatter@@@)T@@)Y@(WarningsR%alert@@@)U@@)W S@@@)V@@)X@@)Z@@)\@ H-- H--@@ R@@+prerr_alert@(LocationT!t@@@)]@@)b@(WarningsU%alert@@@)^@@)` :V@@@)_@@)a@@)c@ L.+.+ L.+.W@@ S@@*deprecated#def(LocationW!t@@@)d@@@)r@@)s#use(LocationX!t@@@)e@@@)n@@)o@(LocationY!t@@@)f@@)k@ Z@@@)g@@)i [@@@)h@@)j@@)l@@)p@@)t@ P.. P..@@ T@@%alert#defҠ(Location\!t@@@)u@@@)@@)#use(Location]!t@@@)v@@@)@@)$kind ^@@@)w@@)@(Location_!t@@@)x@@)}@ `@@@)y@@){ a@@@)z@@)|@@)~@@)@@)@@)@ mS// nS//O@@ lU@@2auto_include_alert@ b@@@)@@) c@@@)@@)@ V/s/s V/s/@@ V@@7deprecated_script_alert@ *d@@@)@@) e@@@)@@)@ Z// Z/0@@ W@@%errorH;@@nA(Locationf&report@@@)@@@@ `00 `00@@@@ X@A@+delayed_msgI;@@A@ &g@@@)@@)Ϡ*Format_doch!t@@@)@@@)@@)@@@@ c11 c11K@@@@ Y@A@%error#loc(Locationi!t@@@)@@@)@@)#subZk(Locationj#msg@@@)@@@)@@@)@@)(footnote(Locationl+delayed_msg@@@)@@@)@@)@ m@@@)@@)(Locationn%error@@@)@@)@@)@@)@@)@ #e1M1M $e1M1@@ "Z@@&errorf#locڠ(Locationo!t@@@)@@@)@@)#subq(Locationp#msg@@@)@@@)@@@)@@)(footnote(Locationr+delayed_msg@@@)@@@)@@)@&Stdlibv'format4!a@)J@)Ѡ*Format_docs)formatter@@@)Ҡ t@@@)Ӡ(Locationu%error@@@)@@@)@@)@@)@@)@@)@@)@ g11 h12@@ [@@2aligned_error_hint#locJ(Locationw!t@@@)@@@*@@* #sub\ y(Locationx#msg@@@)@@@)@@@*@@*(footnotet(Locationz+delayed_msg@@@)@@@*@@*@&Stdlib'format4!a@* J@)*Format_doc{)formatter@@@) _|@@@)@ *Format_doc}!t@@@)@@@)@@)(Location~%error@@@)@@)@@@)@@)0@@)@@*@@*@@* @ j22 l2d2@@ \@@0error_of_printer#locˠ(Location!t@@@* @@@*'@@*(#subݠ (Location#msg@@@*@@@*@@@*#@@*$(footnote(Location+delayed_msg@@@*@@@*@@* @@*Format_doc)formatter@@@*@@*@!a@*+J@*@@* @@@*@@*@@*@@*@@@*(Location%error@@@*@@*@@*@@*!@@*%@@*)@ q33 r34 @@ ]@@5error_of_printer_file@@*Format_doc)formatter@@@*,@@*1@!a@*9J@*-@@*/ @@@*.@@*0@@*2@@*6@@@*4(Location%error@@@*3@@*5@@*7@ t4"4" t4"4p@@ ^@@5register_error_of_exn@@#exn@@@*:@@*> ޠ(Location%error@@@*;@@@*=@@*?@@*A G@@@*@@@*B@ y44 y44@@ _@@,error_of_exn@%@@@*C@@*J Р"Ok(Location%error@@@*D1Already_displayed@@@@*FA@@@*G@@@*I@@*K@ 6Q6Q 6Q6@@ `@@±%ErrorJ#KG@(Location%error@@@*L@@A "66 #66@@ !a@B@±7Already_displayed_errorK#@@@A ,7 7  -7 7A@@ +b@B@,raise_errorf#loc(Location!t@@@*O@@@*h@@*i#sub (Location#msg@@@*P@@@*R@@@*d@@*e(footnote (Location+delayed_msg@@@*S@@@*`@@*a@&Stdlib'format4!a@*lL@*T*Format_doc)formatter@@@*U @@@*V!b@*nL@*W@@@*\@@*]@@*^@@*b@@*f@@*j@ 77 8 8T@@ c@@0report_exception@&Stdlib&Format)formatter@@@*o@@*t@@@@*p@@*r %@@@*q@@*s@@*u@ 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@@ x w@@0Location.mknoloc@ t@ u@@@@ f.Location.mkloc@ a@ b@ [@@@@ JA@*Input info@@3Location.input_name@ L@@@@ @5Location.input_lexbuf@ ;@@@@ #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@@@@@@@@@@@@@ )@ *@@@@ $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@@@@@@@@@@@@@ @ @@@@ w '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@ @@@@ x5Location.Doc.filename@ s@@@@ gLocation.best_toplevel_printer3 ADetects the terminal capabilities and selects an adequate printer@@@@@@@@@@@@ X@W Y@@@@ LB@+Printing a &report@@5Location.print_report3 #Display an error or warning report.@@@@@@@@@@@@ W@p X@s M@@@@ @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.@@@@@@@@@@@@ Q@@@@ 9?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.@@@@@@@@@@@@ U@ V@ M@@@@ 89Location.warning_reporter3?Hook for intercepting warnings.@@@@@@@@@@@@ 9@@@@ !Location.default_warning_reporter3 +Original warning reporter for use in hooks.@@@@@@@@@@@@ @ @ @@@@ 񠙠B@1Printing warnings@@?Location.formatter_for_warnings@ @@@@ ⠕6Location.print_warning3 4Prints a warning. This is simply the composition of .report_warning( and ,print_report!.@@@@@@@@@@@@ @ @ @" @@@@ Ϡ6Location.prerr_warning3(Same as -print_warning+, but uses 7!formatter_for_warnings8 as output formatter.@@@@@@@@@@@@ @= @@ @@@@ ǠA@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 @@@@ Ѡ7Location.alert_reporter3=Hook for intercepting alerts.@@@@@@@@@@@@ @@@@ ?Location.default_alert_reporter3 )Original alert reporter for use in hooks.@@@@@@@@@@@@ @ @ @@@@ B@/Printing alerts@@4Location.print_alert3 3Prints an alert. This is simply the composition of ,report_alert( and ,print_report!.@@@@@@@@@@@@ @ @ @ @@@@ ~4Location.prerr_alert3(Same as +print_alert+, but uses 7!formatter_for_warnings8 as output formatter.@@@@@@@@@@@@ @ @ @@@@ v3Location.deprecated3;Prints a deprecation alert.@@@@@@@@@@@@ w@ w v@ h g@ Z@ Q@@@@ G.Location.alert3:Prints an arbitrary alert.@@@@@@@@@@@@ H@ H G@ 9 8@ * )@  #@ @@@@ ;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@@@@@@@@@o;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.@@@@@@@@@@@@y@yx@ji@UT@G@@@@9Location.error_of_printer@ @  @@@@@@@@>Location.error_of_printer_file@@@@@@@A@ 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).@@@@@@@@@@@@@@@@@5Location.error_of_exn@@@@@@b.Location.Error3(Raising 'Error e2 signals an error !e @; the exception will be caught and the error will be printed.@@@@@@@@@@@@m@@@@gf@@ 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@@@@@@@@@@@@@@@@qp@@5Location.raise_errorf@m@ml@^]@IH@B;@@@@9Location.report_exception3 'Reraise the exception if it is unknown.@@@@@@@@@@@@@Q@T @@@@@@@@A(Warnings&Lexing*Format_doc&Format&Buffer@@@@@