Caml1999I037:f *1)D(Location!t;@@)loc_start@@&Stdlib&Lexing(position@@@ϰ4parsing/location.mliZZ@@A@'loc_end@@&Lexing(position@@@ΰ[[7@@)B@)loc_ghost@@$boolE@@@Ͱ\8:\8J@@7C@@@A(Warnings#loc@@@@@@@+Y,]KN@@@@D@@A@$noneI@@@@8~ ; ;9~ ; G@@QD@@'is_none@@@@@@0@@@@@@LA  MA  @@eE@@'in_file@&stringQ@@@@@+@@@@@@bD  cD  @@{F@@$init@y&Lexing&lexbuf@@@@@@!@@@@@$unitF@@@@@@@@G : :G : d@@G@@$curr@&Lexing&lexbuf@@@@@d@@@@@@K  K  @@H@@+symbol_rloc@*@@@@@x@@@@@@N % %N % ?@@I@@+symbol_gloc@>@@@@@@@@@@@O @ @O @ Z@@J@@'rhs_loc@#intA@@@@@@@@@@@S  S  @@K@@,rhs_interval@@@@@@@@@@@@@@@@@@@@U  U @@L@@,get_pos_info@ &Lexing(position@@@@@@@@@@C@@@@I@@@@@@@@W  W A@@6M@@#loc;!a@@A#txt@@ 0[km1[kv@@IO@#loc@@@@@;\wy<\w@@TP@@@A@Y@@@@@AZ[[B]@@@@ZN@A@'mknoloc@!a@@@2@@@@@@W_X_@@pQ@@%mkloc@!a@@@@8@@@@@@@@ @@ @@ @s`t`@@R@@*input_name#ref(@@@ @@@ @ee@@S@@,input_lexbuf#ref&optionL&Lexing&lexbuf@@@@@@@@@@ff@@T@@3input_phrase_buffer#ref&Buffer!t@@@@@@@@@@mm>@@U@@(echo_eof@M@@@@@Q@@@@@@riiri@@V@@%reset@b@@@@@f@@@@@@ss@@W@@5rewrite_absolute_path@@@@@@@@@@@@xx@@X@@;rewrite_find_first_existing@@@@ @@!z@@@"@@@#@@$@@@0Y@@>rewrite_find_all_existing_dirs@@@@%@@&$listK@@@'@@@(@@)@34;@@LZ@@-absolute_path@@@@*@@+@@@,@@-@HI@@a[@@-show_filename@@@@.@@/@@@0@@1@]33^3V@@v\@@.print_filename@t&Format)formatter@@@2@@3@@@@4@@5@@@6@@7@@8@}~@@]@@)print_loc@ )formatter@@@9@@:@`@@@;@@<@@@=@@>@@?@)@@^@@*print_locs@>)formatter@@@@@@A@@@@B@@@C@@D<@@@E@@F@@G@***U@@_@@4separate_new_message@a)formatter@@@H@@IS@@@J@@K@VVV@@`@@Ӡ#Doc@4separate_new_message*Format_doc'printern@@@@@@@@@ a@@(filename'printer@@@@@@@@@b@@/quoted_filename*'printer@@@@@@@!@@2c@@#loc>'printer@@@@@@@,"$-"A@@Ed@@$locsQ'printer @@@@@@@@@@DBDEBg@@]e@@@@HIhk@af@@@2highlight_terminfo@_&Lexing&lexbuf@@@L@@M@j)formatter@@@N@@O@B:@@@P@@@Q@@R@@@S@@T@@U@@V@vw@@g@@#msg;@@@A/!t@@@W@@@X@@@@ H H H c@@@@h@A@#msg#locj@@@Y@@@Z@@[@'format4!a@a)formatter@@@^9@@@]C@@@\@@@_@@`@@b@@c@ e e e @@n@@+report_kind;@@,Report_errorĐ@@    @@p@.Report_warningŐ@@@g@@    @@q@7Report_warning_as_errorƐ@@@f@@   !@@r@,Report_alertǐ@@@e@@!!!!.@@s@5Report_alert_as_errorȐ@@@d@@!/!1 !/!R@@!t@@@A@@@@@   @@@@$o@A@&report;@@$kind@@U@@@m!d!f!d!y@@6v@$main@@i@@@l(!z!|)!z!@@Aw@#sub@@x@@@j@@@k8!!9!!@@Qx@(footnote@@`!t@@@h@@@iK!!L!!@@dy@@@A@@@@@O!T!TP!!@@@@hu@A@.report_printer;@@"pp@@@@@@@@@s&Format)formatter@@@@@@f@@@@@@@@@@@@@@Ӱ|!!}""-@@{@.pp_report_kind@@@'@@@@@@@@@@@@&Format)formatter@@@@@@@@@@@&@@@@@@@@@@@ɰ"/"1"^"@@|@+pp_main_loc@@@S@@@@@@G@@@@@@&Format)formatter@@@@@@@@@@@R@@@@@@@@@@@""""@@}@+pp_main_txt@@@@@@@@@s@@@@@@&Format)formatter@@@@@@!t@@@@@@@@@@@@@@@@""##3@@~@*pp_submsgs@@@@@@@@@@@@@@@'&Format)formatter@@@@@@p@@@@@@@@@@@@@@@@@@@4#4#65#_#@@M@)pp_submsg@@@@@@@@@@@@@@@X&Format)formatter@@@@@@@@@@@@@@@@@@@@@@`##a##@@y@@-pp_submsg_loc@@@ @@@{@@|@@@@}@@~@&Format)formatter@@@@@@Q@@@@@ @@@@@@@@@@@##$$(@@A@-pp_submsg_txt@@@7@@@n@@o@+@@@p@@q@&Format)formatter@@@r@@s@!t@@@t@@u9@@@v@@w@@x@@y@@z$)$+$W$@@B@@@A@@@@@!!$$@@@@z@A@2batch_mode_printerg@@@@%W%W%W%}@@C@@9terminfo_toplevel_printer@&Lexing&lexbuf@@@@@~@@@@@@ %% %%@@D@@5best_toplevel_printer@q@@@@@@@@@@@ %% %%@@E@@,print_report@ )formatter@@@@@@@@@@@@@@@@@@@&[&[&[&@@-F@@.report_printer&#ref@@@@@@@@@@@@@@@.&&/&&@@GG@@6default_report_printer@@@@@@@@@@@@B''C'(@@[H@@.report_warning@@@@@@@3!t@@@@@Ƞ@@@@@@@@@@@d"((e"((@@}I@@0warning_reporterv#ref@B@@@@@@Z!t@@@@@@@@@@@@@@@@@@@&)W)W&)W)@@J@@8default_warning_reporter@e@@@@@@}!t@@@@@6@@@@@@@@@@@))))))@@K@@6formatter_for_warnings#refR)formatter@@@@@@@.*M*M.*M*w@@L@@-print_warning@@@@@@ @m)formatter@@@ @@ @!t@@@ @@ i@@@@@@@@@@0*y*y0*y*@@M@@-prerr_warning@@@@@@@!t@@@@@@@@@@@@@ 4++ 4++?@@"N@@,report_alert@@@@@@@%alert@@@@@@@@@@@@@@@ @+<++,<+,#@@DO@@.alert_reporter=#ref@ @@@!@@"@!%alert@@@#@@$@@@%@@@&@@'@@(@@@)@S@,,T@,,@@lP@@6default_alert_reporter@,@@@*@@+@D%alert@@@,@@-٠@@@.@@@/@@0@@1@uC--vC--A@@Q@@+print_alert@N@@@2@@3@)formatter@@@4@@5@p%alert@@@6@@7@@@8@@9@@:@@;@H--H--@@R@@+prerr_alert@v@@@<@@=@%alert@@@>@@?9@@@@@@A@@B@L.+.+L.+.W@@S@@*deprecated#def0@@@C@@@D@@E#use=@@@F@@@G@@H@@@@I@@J@@@@K@@Lo@@@M@@N@@O@@P@@Q@P..P..@@ T@@%alert#deff@@@R@@@S@@T#uses@@@U@@@V@@W$kind@@@X@@Y@@@@Z@@[@@@@\@@]@@@^@@_@@`@@a@@b@@c@1S//2S//O@@JU@@2auto_include_alert@@@@d@@e@@@f@@g@FV/s/sGV/s/@@_V@@7deprecated_script_alert@@@@h@@i@@@j@@k@[Z//\Z/0@@tW@@%error;@@@A@@@l@@@@i`00j`00@@@@X@A@+delayed_msg;@@@A@@@@m@@n!t@@@o@@@p@@q@@@@c11c11K@@@@Y@A@%error#loce@@@r@@@s@@t#sub ~@@@u@@@v@@@w@@x(footnoteL@@@y@@@z@@{@h@@@|@@}g@@@~@@@@@@@@@e1M1Me1M1@@Z@@&errorf#loc>@@@@@@@@#subK0@@@@@@@@@@@(footnote]B@@@@@@@@@ 'format4!a@()formatter@@@@@@S@@@@@@@@@@@@@@@@@ g11 h12@@ 5[@@2aligned_error_hint#loc@@@@@@@@#sub@@@@@@@@@@@(footnote@@@@@@@@@ ^'format4!a@{)formatter@@@@@@@۠!t@@@@@@@@@@@@@@@@@@$@@@@@@@@@ ~j22 l2d2@@ \@@0error_of_printer#loc \@@@@@@@@#subu@@@@@@@@@@@(footnote@@@@@@@@@@)formatter@@@@@@!a@@@ K@@@@@@@@@@ @@ @@@@@@@@@@@@@@ q33 r34 @@ ]@@5error_of_printer_file@@)formatter@@@@@@!a@@@ u@@@@@@@@@@ @@6@@@@@@@@ t4"4" t4"4p@@ ^@@5register_error_of_exn@@#exnG@@@@@T@@@@@@@@@@ @@@@@@ !y44 "y44@@ :_@@,error_of_exn@@@@@@Р"Oky@@@ޠ1Already_displayed@@@@A@@@@@@@@@ G6Q6Q H6Q6@@ ``@@ %Error#?@@@@@@A&_none_@@A@ oa@B@ 7Already_displayed_error#@@@A @ vb@B@,raise_errorf#locҠ ;@@@@@@@@#subߠT@@@@@@@@@@@(footnote@@@@@@@@@ 'format4!a@)formatter@@@ )@@@!b@@@@@@@@@@@@@@@ 77 8 8T@@ c@@0report_exception@ T)formatter@@@@@@@@@@@ N@@@@@@@@ 8V8V 8V8@@ d@@@K㠠(Location0nBɊOn?7~ؠ(Warnings0Ef{&-Stdlib__Uchar0=H^V9>ɠ+Stdlib__Sys0b'8=OIn+Stdlib__Seq0?72#[O.Stdlib__Lexing0^m|e,Stdlib__Lazy0$1mlࠠ.Stdlib__Format00FClW.Stdlib__Either0HD ?|>.Stdlib__Domain0'Ϳo\0m.K.Stdlib__Buffer0,I[?z&Stdlib0t0VoS%{<F:*Format_doc0uy@GmWUࠠ0CamlinternalLazy0zY# #4#-8CamlinternalFormatBasics0|.e1R$|o@@@Caml1999T037%I3-C(Location*ocaml.text&_none_@@A Source code locations (ranges of positions), used in parsetree. {b Warning:} this module is unstable and part of {{!Compiler_libs}compiler-libs}. 4parsing/location.mliP77U@@@@@@3@@@@@@#intA;@@#intA@@@@@;@A@$charB;@@$charA@@@@@A@A@&stringQ;@@&stringA@@@@@G@@@%bytesC;@@%bytesA@@@@@M@@@%floatD;@@%floatA@@@@@S@@@$boolE;@@%falsec@@]@$trued@@c@@@A@@@@@d@A@$unitF;@@"()e@@n@@@A@@@@@o@A@ #exnG;@@@A@@@@@s@@@#effH;@@O@A@A@@@@@@|@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@@@@%arrayJ;@@R@A%arrayA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@ @@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A!=ocaml.warn_on_literal_pattern%@&@0Division_by_zero]#@@@A+ . .@+End_of_file\#$@@@A366@'FailureY#,@'@@A<??@0Invalid_argumentX#5@0@@AE$H#H@-Match_failureV#>@@=@9@;@@a@@AV5Y4Y@)Not_foundZ#O@@@A^=a<a@-Out_of_memoryW#W@@@AfEiDi@.Stack_overflow^#_@@@AnMqLq@.Sys_blocked_io_#g@@@AvUyTy@)Sys_error[#o@j@@A^]@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@Aࠡ &FormatWW@@A3@ @AW@@@A+!tAYY@@;@@)loc_start@@)&Lexing(position@@@ZZ@@A@'loc_end@@8&Lexing(position@@@[[7@@B@)loc_ghost@@@@@\8:\8J@@C@@@A(Warnings#loc@@@u@@@@Y]KN@)ocaml.doc  [t] 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" - an 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. ^OOu ' *@@@@@@@@@ @@@#HH@Z @?@@Ш@гKMZ Z@P Z Z@@@Y3        @pg;@@@Ao@@@@K@@@@52@@"@A@@g@@@`@#\\T[%@S@@Ш@г_a)['*[-@d-[..[6@@@m#@@p@@&@i@#ee`7\8C@_@@Ш@гh$bool@\8EA\8I@@p5@@s@@8@o@@Aгk(WarningsNYOY@pRYSY@@@zH@@spfon@nn@@@n@n@@ð~}@ut  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. qw , ,r| 7 9@@@@@@3pooppppp@@A$none}~ ; ?~~ ; C@гڠ!t~ ; F~ ; G@@ @@@@@@~ ; ;@ A An arbitrary value of type [t]; describes an empty ghost range.  H H H @@@@@@@D@@@@@@@@@7'is_noneA  A  @б@г!tA  A  @@ @@@3@PK8@A@@г$boolA  A  @@ @@@@@@@@@@ @@@A   @ 4 True for [Location.none], false any other location B  B  @@@@@@@E@@@@@@@@@3'in_file D  D  @б@гϠ&stringD   D  @@ @@@3        @La8@A@@гk!tD  D  @@ @@@@@@@@@@ @@@$D   @? 6 Return an empty ghost range located in a given file. 1E  2E  8@@@@@@@JF@@@OE@@@@@@3$init HG : >IG : B@б@г&Lexing&lexbufWG : EXG : K@ [G : L\G : R@@@@@@3^]]^^^^^@UjA@A @@б@г4&stringmG : VnG : \@@ @@@@@г$unitzG : `{G : d@@ @@@@@@@@@@# @@@+@@ @@(3@@@G : :@ Z Set the file name and line number of the [lexbuf] to be the start of the named file. H e eI  @@@@@@@G@@"@@@@@@@G$curr K  K  @б@г)&Lexing&lexbufK  K  @ K  K  @@@@@@3@iA@A @@г'!tK  K  @@ @@@@@@@@@@ @@@K   @ : Get the location of the current token from the [lexbuf]. L  L  #@@@@@@@H@@@ @@@@@@3+symbol_rloc N % )N % 4@б@г$unitN % 6N % :@@ @@@3@Lj8@A@@гr!tN % >N % ?@@ @@@@@@@@@@ @@@+N % % @@CI@@@@+symbol_gloc 6O @ D7O @ O@б@г堐$unitAO @ QBO @ U@@ @@@3CBBCCCCC@3H@A@@г!tPO @ YQO @ Z@@ @@@@@@@@@@ @@@]O @ @ @@uJ@@@@'rhs_lochS  iS  @б@гF#intsS  tS  @@ @@@3uttuuuuu@3H@A@@г֠!tS  S  @@ @@@@@@@@@@ @@@S   @ n [rhs_loc n] returns the location of the symbol at position [n], starting at 1, in the current parser rule. Q \ \R  @@@@@@@K@@@@@@@@@3,rhs_intervalU  U  @б@г#intU  U  @@ @@@3@La8@A@@б@г#intU U @@ @@@@@г0!tU U @@ @@@@@@@@@@# @@@+@@ @@(.@@@U  @@L@@@@.,get_pos_infoW W @б@гr&Lexing(positionW  W "@  W # W +@@@@@@3@Pe(@A @@В@г砐&string W /!W 5@@ @@@@@@г#int/W 80W ;@@ @@@"@@@г#int>W >?W A@@ @@@1@@@@&@@ @@:-@@@B@@ @@?J@@@TW  @o2 file, line, char aXBBbXBY@@@@@@@zM@@&@u@@@@@@^A+#locByZ[czZ[f@А!a@3@s4;@@@A@A@G@B@@@Z[[]@@@@N@@AZ[`Z[b@@BA@;@A#txt@@C@°[km[kv@@O@#loc@@@@@ư\wy\w@@P@@@A@Y@@@@@#@@@ @#[kp@@@Ш@А!a8[ks[ku@@$@@=@"@#\w|@@@Ш@г!!t\w\w@@)L@@,@@O@(@@A@E@@3@N@AFE@'mknoloc__@б@А!a@C@3@euU@A__@@г{#loc__@А!a__@@@@@@ @@@#@@ @@@@@ _@@!Q@@@@$%mkloc``@б@А!a@C@3@9J@A#`$`@@б@г!t.`/`@@ @@@@@г #loc;`<`@А!a&!B`C`@@@,@@@( @@@@@ @@- @@@7@@ @@20@@@U`@@mR@@@@8kj0 {1 Input info} gchc@@@@@@3feefffff@J[@A*input_namesete@г#ref|e}e@гM&stringee@@ @@@"@@@@@@' @@@e@@S@@@@-,input_lexbufff@г#refff@г&optionff@г)&Lexing&lexbufff @ f f@@@@@@3@a\:@A @@@" @@@@@@1@@@ .@@@f1@@T@@3@@3input_phrase_bufferAmm)@гY#refm;m>@гJ&optionm4m:@гn&Buffer!tm+m1@ m2 m3@@@@@@83        @Fv:@A @@@" @@@:@@@1@@@< .@@@m1@@5U@@3@@32 ! {1 Toplevel-specific functions} /pAA0pAg@@@@@@3.--.....@$T@A(echo_eofB;rim<riu@б@гꠐ$unitFriwGri{@@ @@@=@@г$unitSriTri@@ @@@>'@@@@@?@@@, @@@`rii @@xV@@@@2%resetCksls@б@г$unitvsws@@ @@@A3xwwxxxxx@KF@A@@г)$unitss@@ @@@B@@@@@C@@D @@@s @@W@@@@5 {1 Rewriting path } vv@@@@@@3@,A@A5rewrite_absolute_pathDxx@б@г&stringxx@@ @@@E@@г&stringxx@@ @@@F'@@@@@G@@H, @@@x @𐠠  [rewrite_absolute_path path] rewrites [path] to honor the BUILD_PATH_PREFIX_MAP variable if it is set. It does not check whether [path] is absolute or not. The result is as follows: - If BUILD_PATH_PREFIX_MAP is not set, just return [path]. - otherwise, 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} y@@@@@@@X@@@@@@@@@K;rewrite_find_first_existingE@б@гˠ&string@@ @@@I3@d_8@A@@гg&option@г䠐&string @@ @@@J@@@@@@L @@@&@@M @@N#)@@@/@J  [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: - [None], means either {ul {- BUILD_PATH_PREFIX_MAP is not set and [path] does not exists, or} {- no source prefixes of [path] in the mapping were found,}} - [Some target], means [target] exists and either {ul {- BUILD_PATH_PREFIX_MAP is not set and [target] = [path], or} {- [target] is the first file (in priority order) that [path] mapped to that exists in the file system.}} - [Not_found] 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} <=@@@@@@@UY@@,@ZP@@@@@@B>rewrite_find_all_existing_dirsFST$@б@г%&string^&_,@@ @@@O3`__`````@[p8@A@@гޠ$listm7n;@г>&stringw0x6@@ @@@P@@@@@@R @@@&@@S @@T#)@@@@  [rewrite_find_all_existing_dirs dir] accumulates a list of existing directories, [dirs], that are the result of mapping a potentially abstract directory, [dir], 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: - [[]], means either {ul {- BUILD_PATH_PREFIX_MAP is not set and [dir] is not an existing directory, or} {- if set, then there were no matching prefixes of [dir].}} - [Some dirs], means dirs are the directories found. Either {ul {- BUILD_PATH_PREFIX_MAP is not set and [dirs = [dir]], or} {- it was set and [dirs] are the mapped existing directories.}} - Not_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} <<@@@@@@@Z@@,@@@@@@@B-absolute_pathG@б@г&string@@ @@@U3@[p8@A@@г&string@@ @@@V@@@@@W@@X @@@ @  [absolute_path path] first makes an absolute path, [s] from [path], prepending the current working directory if [path] was relative. Then [s] is rewritten using [rewrite_absolute_path]. Finally the result is normalized by eliminating instances of ['.'] or ['..']. @@@@@@@[@@@@@@@@@3  8 {1 Printing locations}  1@@@@@@3@EZ1@A-show_filenameH 37 3D@б@гݠ&string 3F 3L@@ @@@Y@@гꠐ&string #3P $3V@@ @@@Z'@@@@@[@@\, @@@ 033 @K r In -absname mode, return the absolute path for this filename. Otherwise, returns the filename unchanged.  =W[ >@@@@@@@ V\@@@[ Q@@@@@@K.print_filenameI T U@б@г)formatter _ `@@ @@@]3 a ` ` a a a a a@d_8@A@@б@г 7&string p q@@ @@@^@@г !$unit } ~@@ @@@_@@@@@`@@a# @@@+@@b @@c(.@@@ @@ ]@@@@.)print_locJ  @б@г )formatter  @@ @@@d3        @G\@A@@б@г !t   !@@ @@@e@@г g$unit % )@@ @@@f@@@@@g@@h# @@@+@@i @@j(.@@@ @@ ^@@@@.*print_locsK *. *8@б@гP)formatter *: *C@@ @@@k3        @G\@A@@б@г m$list *I *M@гZ!t *G *H@@ @@@l@@@@@@n  @@г $unit *Q *U@@ @@@o-@@@@@p@@q2 @@@:@@r @@s7=@@@ ***@@ B_@@@@=4separate_new_messageL 5VZ 6Vn@б@г)formatter @Vp AVy@@ @@@t3 B A A B B B B B@Vk@A@@г $unit OV} PV@@ @@@u@@@@@v@@w @@@ \VV @@ t`@@@@#DocC i j@ f@@Б4separate_new_message w x@г*Format_doc'printer*Format_doc  @   @@г 9$unit  @@ @@@d3        @VkB@A@@@$ @@@f @@@ @@ a@@@@ (filename  @г8'printer*Format_doc  @   @@г &string  @@ @@@g3        @7_0@A@@@" @@@i @@@ @@ b@@@@ /quoted_filename  @гn'printer*Format_doc  @   !@@г Ƞ&string  @@ @@@j3        @7]0@A@@@" @@@l @@@ @@ (c@@@@ #loc "( "+@г'printer*Format_doc ("/ )"9@  ,": -"A@@г !t 7"- 8".@@ @@@m3 9 8 8 9 9 9 9 9@7]0@A@@@" @@@o @@@ F"$@@ ^d@@@@ $locs QBH RBL@г'printer*Format_doc ^BU _B_@  bB` cBg@@г ޠ$list mBP nBT@г ˠ!t wBN xBO@@ @@@p3 y x x y y y y y@Ag:@A@@@ @@@r @@@1@@@t &@@@ BD)@@ e@@+@@@@@@R@K@@3        @M@A 3        @@A  hk@@@ @@  - {1 Toplevel-specific location highlighting}  mm m@@@@@@3        @Q@F@@@{@t8@@@"V@A2highlight_terminfo  @б@г B&Lexing&lexbuf  @   @@@@@@u/ @@б@г Q)formatter  @@ @@@v>@@б@г l$list  @г Y!t  @@ @@@wW@@@@@@y\ @@г $unit  @@ @@@zi@@@@@{@@|n @@@8@@} @@~s;@@@L@@ @@xT@@@ .@@ Fg@@@@~ D C # {1 Reporting errors and warnings}  @ A @@@@@@3 ? > > ? ? ? ? ?@@A W V - {2 The type of reports and report printers}  S   T  F@@@@@@A+#msgD ^ H M _ H P@@;@@@A!t@@@@@@@@@@ o H H p H c@@@@ h@@@Aг#loc y H ` @г*Format_doc  H S  H ]@  H ^  H _@@@#3        @I2;@@@A:@@@@@@@@'@@@$@A@@@3 '@@)@@U)(@#msg   e i  e l@б#locг !t  e s  e t@@ @@@3        @qZT@A@@б@г +'format4  e   e @А!a@E@  e y  e {@@гT)formatter*Format_doc  e }  e @   e   e @@@@@@0 @@г $unit  e   e @@ @@@>@@г#msg  e   e @@ @@@L@@@H>$ @@@T  e xI@@А!aGY  e   e @@@@@N@@` @@q rl@@@@@@@j  e n@@ @  e e@@ 8n@@@@qA++report_kindE ,   -  @@;@@,Report_errorĐ@@ 6   7  @@ Op@.Report_warningŐ @@@@@ D   E  @@ ]q@7Report_warning_as_errorƐ @@@@@ R   S !@@ kr@,Report_alertǐ )@@@@@ `!! a!!.@@ ys@5Report_alert_as_errorȐ 7@@@@@ n!/!1 o!/!R@@ t@@@A@@@@@ r  @@@@ o@@#EE y  C@B@@@F@#BB      @;@гD&string   E@@K3        @oe;@@@A@@@@@@@@@AK@@@@M@#II     ! @B@гK&string  ! L@@RM@@@@O@#KK !! !!$@D@гM&string !!(N@@T%O@@@@Q@#MM !/!3 !/!H@F@гO&string !/!LP@@V5Q@@@@S@@A@O@@3        @5@APS@A+&reportF !T!Y !T!_@@;@@$kind@@@@@ !d!f !d!y@@ v@$main@@@@@ !z!| !z!@@ w@#sub@@ c@@@@@@ !! !!@@x@(footnote@@ W!t@@@@@@!! !!@@!y@@@A@@@@@ !T!T !!@@@@%u@@#AA<!d!j@;@@Ш@гD+report_kind!d!m!d!x@@L3@[;@@@A@@@@@@@@@A@@T@@@P@#LLG+!z!@F@@Ш@гO#msg4!z!5!z!@@W@@Z@@@V@#RRH=!!@G@@Ш@гU$listF!!G!!@гZ#msgO!!P!!@@b2@@@g3 @@j@@6@a@#]]QY!!@P@@Ш@г`&optionb!!Z@гd*Format_docl!!m!!@kp!!q!!@@@sT@@@xU l@@{@@X@p@@A@l@@3tssttttt@W@Aml@A+.report_printerG!!!!@@;@@"pp@@@@@@@@@ &Format)formatter@@@@@@@@@@@P@@@@@@@@@!!""-@@{@.pp_report_kind@@@:@@@@@@@@@@@@ :&Format)formatter@@@@@@@@@@@@@@@@@@@@@@"/"1"^"@@|@+pp_main_loc@@@i@@@@@ @(@@@@@ @ i&Format)formatter@@@@@@ Z@@@@@@@@@@@@@@ @@ "" ""@@!}@+pp_main_txt@@@@@@@@@W@@@@@@ &Format)formatter@@@@@@!t@@@@@@@@@@@@@@@@9"":##3@@R~@*pp_submsgs@@@@@@@@+@@@@@@)@ &Format)formatter@@@ @@'@נ @@@!@@@#@@%@@@$@@&@@(@@*@@,m#4#6n#_#@@@)pp_submsg@@@@@@/@@:@@@@0@@8@ &Format)formatter@@@1@@6@<@@@2@@4B@@@3@@5@@7@@9@@;####@@@@-pp_submsg_loc@@@,@@@>@@I@@@@?@@G@,&Format)formatter@@@@@@E@@@@A@@Cq@@@B@@D@@F@@H@@J##$$(@@A@-pp_submsg_txt@@@[@@@M@@X@@@@N@@V@[&Format)formatter@@@O@@T@x!t@@@P@@R@@@Q@@S@@U@@W@@Y$)$+$W$@@B@@@A@@@@@!!$$@ 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. $$%"%$@@@@@@@@@'z@@#l!!@k@@Ш@б@г.report_printer!!!"!"@@3      @_Y;@@@A@@@@@)&@@@A@@б@г2"" 3""@6""7""@@@@@б@г&reportB""C""$@@!@@г$unitK""(L"",@@*@@+ @@,@@-0@@@@0@@#~W"/"?@}@@Ш@б@г.report_printerb"/"Bc"/"P@@A@@б@г&reportm"/"Tn"/"Z@@L@@б@гy"^"bz"^"h@}"^"i~"^"r@@@]@@б@г+report_kind"^"v"^"@@h@@г$unit"^""^"@@q@@r @@s@@t+@@u7@@@@x@@#""@@@Ш@б@г.report_printer""""@@@@б@гà&report""""@@@@б@гƠȰ""""@˰""""@@@@@б@г̠!t""""@@@@гѠ$unit""""@@@@ @@@@+@@7@@@@ @@#ؠذ""@@@Ш@б@г٠.report_printer""""@@Ѱ@@б@гܠ&report"""#@@ܰ@@б@гߠ ##  ##@ ####@@@@@б@г堡*Format_doc####(@##) ##*@@@@@г$unit)##.*##2@@@@ @@ %@@ 2@@  >@@#@@@@#6#4#@@@@Ш@б@г.report_printerA#4#CB#4#Q@@ @@б@г&reportL#4#UM#4#[@@+@@б@гX#_#cY#_#i@\#_#j]#_#s@@@ <@@б@г$listh#_#{i#_#@г#msgq#_#wr#_#z@@P@@@Q @@г $unit{#_#|#_#@@Z@@#[@@/\(@@8]5@@A^A@@D@@-a@@###@@@Ш@б@г.report_printer####@@r@@б@г&report####@@ }@@б@г####@ ####@@@)@@б@г!#msg####@@)@@г&$unit####@@.@@7 @@C@@L+@@U7@@X@@<@1@#--##@@@Ш@б@г..report_printer####@@6@@б@г1&report###$@@9Ű@@б@г46$$ $$@9$$$$@@@Bְ@@б@г:!t$$$$@@B@@г?$unit $$# $$'@@G@@P @@\@@e+@@n7@@q@@K@J@#FF$)$8@@@Ш@б@гG.report_printer#$)$;$$)$I@@O@@б@гJ&report.$)$M/$)$S@@R @@б@гMO:$W$[;$W$a@R>$W$b?$W$k@@@[@@б@гS*Format_docL$W$oM$W$y@ZP$W$zQ$W${@@@b0@@г]$unitZ$W$[$W$@@e9@@p:@@|;%@@<2@@=>@@@@Z@@h@@A@d}sba@aa@@@a@a@@3kjjkkkkk@J@Apo@ * {2 Report printers used in the compiler} %&%&%&%U@@@@@@3~}}~~~~~@^@A2batch_mode_printer|%W%[%W%m@г.report_printer%W%o%W%}@@ @@@)@@@%W%W@@C@@ @@9terminfo_toplevel_printer} %% %%@б@г &Lexing&lexbuf %% %%@  %% %%@@@@@@)3@@;(@A @@гH.report_printer %% %%@@ @@@)@@@@@)@@) @@@ %% @@D@@@@5best_toplevel_printer~ %% %%@б@г$unit %% %%@@ @@@) 3@3Q@A@@гz.report_printer %% %%@@ @@@)!@@@@@)"@@)# @@@  %% @$ C Detects the terminal capabilities and selects an adequate printer  %% %&9@@@@@@@/E@@@4*@@@@@@3879 {2 Printing a [report]} 4&;&;5&;&Y@@@@@@332233333@EZ1@A,print_report@&[&_A&[&k@б@г)formatterK&[&mL&[&v@@ @@@)$@@б@г&reportZ&[&z[&[&@@ @@@)%)@@г $unitg&[&h&[&@@ @@@)&6@@@@@)'@@)(; @@@)@@)) @@)*@,@@@y&[&[@ % Display an error or warning report. &&&&@@@@@@@F@@"@@@@@@@_.report_printer&&&&@г#ref&&&&@б@гV$unit&&&&@@ @@@)+3@}B@A@@г?.report_printer&&&&@@ @@@),@@@@@)-@@). @@@-@@@)0&&+@@@&&.@ 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. &&''@@@@@@@G@@>@@@@@@@96default_report_printer'''(@б@г$unit'('( @@ @@@)13@Rq8@A@@г.report_printer'( '(@@ @@@)2@@@@@)3@@)4 @@@'' @: + Original report printer for use in hooks. ,((-((L@@@@@@@EH@@@J@@@@@@@3NM8 {1 Reporting warnings} J(O(OK(O(l@@@@@@3IHHIIIII@EZ1@Aa` / {2 Converting a [Warnings.t] into a [report]} ] (n(n^ (n(@@@@@@.report_warningg"((h"((@б@гƠ!tr"((s"((@@ @@@)5+@@б@г!t(Warnings"(("((@ "(("((@@@@@@)6C @@г렐&option"(("((@г֠&report"(("((@@ @@@)7Z@@@@@@)9_ @@@$@@): @@);d,@@@A@@)< @@)=iD@@@"((!@Ӑ w [report_warning loc w] produces a report for the given warning [w], or [None] if the warning is not to be printed. #(($)$)U@@@@@@@I@@1@ِ@@@@@@0warning_reporter&)W)[&)W)k@гR#ref&)W)&)W)@б@гE!t&)W)n&)W)o@@ @@@)>3@B@A@@б@г !t(Warnings&)W)s&)W){@  &)W)| &)W)}@@@@@@)? @@гl&option&)W)&)W)@гW&report"&)W)#&)W)@@ @@@)@1@@@@@@)B6 @@@$@@)C @@)D;,@@@C@@)E @@)F@F@@@Y@@@)HE<&)W)mW@@@?&)W)WZ@Z ! Hook for intercepting warnings. L'))M'))@@@@@@@eJ@@j@j`@@@@@@e8default_warning_reporterc)))d)))@б@г !tn)))o)))@@ @@@)I3pooppppp@~8@A@@б@г!t(Warnings))))))@ ))))))@@@@@@)J @@г預&option))))))@гԠ&report))))))@@ @@@)K1@@@@@@)M6 @@@$@@)N @@)O;,@@@C@@)P @@)Q@F@@@)))!@ѐ - Original warning reporter for use in hooks. *))*)*-@@@@@@@K@@1@א@@@@@@_䐠7 {2 Printing warnings} ,*/*/,*/*K@@@@@@3@q1@A6formatter_for_warnings.*M*Q.*M*g@гc#ref.*M*t.*M*w@гe)formatter.*M*j.*M*s@@ @@@)R"@@@@@@)T' @@@ .*M*M@@%L@@@@--print_warning0*y*}0*y*@б@гw!t#0*y*$0*y*@@ @@@)U3%$$%%%%%@FA@A@@б@г)formatter40*y*50*y*@@ @@@)V@@б@гa!t(WarningsG0*y*H0*y*@ K0*y*L0*y*@@@@@@)W) @@г$unitY0*y*Z0*y*@@ @@@)X6@@@@@)Y@@)Z; @@@2@@)[ @@)\@5@@@H@@)] @@)^EK@@@p0*y*y@ ] Prints a warning. This is simply the composition of [report_warning] and [print_report]. }1**~2*+@@@@@@@M@@'@@@@@@@d-prerr_warning4++4++&@б@г!t4++(4++)@@ @@@)_3@}8@A@@б@г!t(Warnings4++-4++5@ 4++64++7@@@@@@)` @@гj$unit4++;4++?@@ @@@)a'@@@@@)b@@)c, @@@4@@)d @@)e17@@@4++@󐠠 U Same as [print_warning], but uses [!formatter_for_warnings] as output formatter. 5+@+@6++@@@@@@@N@@"@@@@@@@P6 {1 Reporting alerts} 8++8++@@@@@@3@bw1@A - {2 Converting an [Alert.t] into a [report]} :++:++@@@@@@,report_alert <++!<++@б@г!t+<++,<+,@@ @@@)f+@@б@гX%alert(Warnings><+,?<+, @ B<+, C<+,@@@@@@)gC @@г&optionP<+,Q<+,#@г &reportZ<+,[<+,@@ @@@)hZ@@@@@@)j_ @@@$@@)k @@)ld,@@@A@@)m @@)niD@@@q<++!@ q [report_alert loc w] produces a report for the given alert [w], or [None] if the alert is not to be printed. ~=,$,$>,k,@@@@@@@O@@1@@@@@@@.alert_reporter@,,@,,@г #ref@,,@,,@б@г!t@,,@,,@@ @@@)o3@B@A@@б@г%alert(Warnings@,,@,,@ @,,@,,@@@@@@)p @@г%&option@,,@,,@г &report@,,@,,@@ @@@)q1@@@@@@)s6 @@@$@@)t @@)u;,@@@C@@)v @@)w@F@@@Y@@@)yE@,,W@@@@,,Z@? Hook for intercepting alerts. A,,A,,@@@@@@@P@@j@#@@@@@@e6default_alert_reporterC--C--@б@г{!t'C--(C--@@ @@@)z3)(()))))@~8@A@@б@гV%alert(Warnings<C--"=C--*@ @C--+AC--0@@@@@@){ @@г&optionNC--;OC--A@г &reportXC--4YC--:@@ @@@)|1@@@@@@)~6 @@@$@@) @@);,@@@C@@) @@)@F@@@oC--!@ + Original alert reporter for use in hooks. |D-B-B}D-B-r@@@@@@@Q@@1@@@@@@@_5 {2 Printing alerts} F-t-tF-t-@@@@@@3@q1@A+print_alertH--H--@б@г!tH--H--@@ @@@)@@б@г%)formatterH--H--@@ @@@))@@б@г%alert(WarningsH--H--@ H--H--@@@@@@)A @@г$unitH--H--@@ @@@)N@@@@@)@@)S @@@2@@) @@)X5@@@F@@) @@)]I@@@H--@ Z Prints an alert. This is simply the composition of [report_alert] and [print_report].  I-- J..)@@@@@@@"R@@'@'@@@@@@|+prerr_alert L.+./!L.+.:@б@г!t+L.+.<,L.+.=@@ @@@)3-,,-----@8@A@@б@гZ%alert(Warnings@L.+.AAL.+.I@ DL.+.JEL.+.O@@@@@@) @@г$unitRL.+.SSL.+.W@@ @@@)'@@@@@)@@), @@@4@@) @@)17@@@dL.+.+@ S Same as [print_alert], but uses [!formatter_for_warnings] as output formatter. qM.X.XrN..@@@@@@@S@@"@@@@@@@P*deprecatedP..P..@б#defг預!tP..P..@@ @@@)3@k:@A@@б#useг!tP..P..@@ @@@)@@б@г !tP..P..@@ @@@)"@@б@г&stringP..P..@@ @@@)1@@гw$unitP..P..@@ @@@)>@@@@@)@@)C @@@)@@) @@)H,@@F Р@@@@)@@) @@)QP..@@c ڠ]@@@)@@)@@)[P..#@@ @P..&@= Prints a deprecation alert. Q..Q./ @@@@@@@T@@6@$@@@@@@{%alertS//S//@б#defг~!t*S//+S//@@ @@@)3,++,,,,,@:@A@@б#useг!t=S//(>S//)@@ @@@)@@б$kindг&stringNS//2OS//8@@ @@@)$@@б@г!t]S//<^S//=@@ @@@)3@@б@г3&stringlS//AmS//G@@ @@@)B@@г$unityS//KzS//O@@ @@@)O@@@@@)@@)T @@@)@@) @@)Y,@@F=@@) @@)^S//-@@] |W@@@)@@)@@)hS//#@@z t@@@)@@)@@)rS//)@@ @S//,@< Prints an arbitrary alert. T/P/PT/P/q@@@@@@@U@@<@Ɛ@@@@@@2auto_include_alertV/s/wV/s/@б@г&stringV/s/V/s/@@ @@@)3@8@A@@г$unitV/s/V/s/@@ @@@)@@@@@)@@) @@@V/s/s @ P Prints an alert that -I +lib has been automatically added to the load path W//X//@@@@@@@V@@@@@@@@@37deprecated_script_alertZ//Z/0 @б@г栐&stringZ/0 Z/0@@ @@@)3!  !!!!!@La8@A@@гҠ$unit.Z/0/Z/0@@ @@@)@@@@@)@@) @@@;Z// @V { [deprecated_script_alert command] prints an alert that [command foo] has been deprecated in favour of [command ./foo] H[00I\0j0@@@@@@@aW@@@f\@@@@@@3ji6 {1 Reporting errors} f^00g^00@@@@@@3eddeeeee@EZ1@AA+%errorHs`00t`00@@;@@A @@@)@@@@|`00}`00@ F An [error] is a [report] which [report_kind] must be [Report_error]. a00a01@@@@@@@@@X@@@Aг&report`00@@3@.(;@@@A0@@@)@)@@@@%"@@@A $@@&$#@##@@@#@#@@D10@A++delayed_msgIc11"c11-@@;@@XA@i@@@)@@)M!t@@@)@@@)@@)@@@@c11c11K@@@@Y@@@Aб@г$unitc110c114@@3@vpj-;@@@A5@@@)@)@@@@@@@@A@@г'&optionc11E!@г+*Format_docc118c11B@2c11Cc11D@@@:$@@@?% 3@@H&)4@@6@@3@&@A76@%error e1M1Qe1M1V@б#locгn!te1M1]e1M1^@@ @@@)3@Coi@A@@б#subг$list-e1M1k.e1M1o@г٠#msg7e1M1g8e1M1j@@ @@@)@@@@@@)" @@б(footnoteг+delayed_msgMe1M1}Ne1M1@@ @@@)3@@б@г#&string\e1M1]e1M1@@ @@@)B@@г%errorie1M1je1M1@@ @@@)O@@@@@)@@)T @@2a,@@@)@@) @@)]}e1M1s@@\kH@@@)@@)@@)ge1M1b@@yus@@@)@@)@@)qe1M1X(@@ @e1M1M+@@Z@@-@@x&errorfg11g11@б#locг!tg11g11@@ @@@*3@!@A@@б#subг0$listg11g11@гk#msgg11g11@@ @@@*@@@@@@*" @@б(footnoteг)+delayed_msgg11g11@@ @@@*3@@б@г['format4h12h12@А!a@*J@*Hh11h11@@г)formatter*Format_doch11 h11@  h11 h11@@@@@@*a @@г$unith11h11@@ @@@*o@@г%error)h12*h12@@ @@@*}@@@H>$ @@@* 7h11I@@А!aG<h12=h12@@@@@*N@@* @@o0i@@@*@@* @@*Lg11@@:@@@*@@*@@*Vg11@@D@@@*@@*@@*`g11$@@ @cg11'@@{[@@)@@2aligned_error_hintnj22oj22,@б#locгϠ!t{k2.25|k2.26@@ @@@*3}||}}}}}@!@A@@б#subг$listk2.2Ck2.2G@г:#msgk2.2?k2.2B@@ @@@*@@@@@@*!" @@б(footnoteг+delayed_msgk2.2Uk2.2`@@ @@@*"3@@б@г*'format4l2d2l2d2@А!a@*@J@*#Hl2d2gl2d2i@@гS)formatter*Format_docl2d2kl2d2u@ l2d2vl2d2@@@@@@*$a @@г$unitl2d2l2d2@@ @@@*%o@@б@гN&optionl2d2l2d2@г!t*Format_docl2d2 l2d2@  l2d2 l2d2@@@@@@*& @@@ @@@*(@@г%errorl2d2 l2d2@@ @@@*)@@@@@**@@*+" @@@tjPC @@@*02l2d2fu@@А!as7l2d28l2d2@@@@@*1z@@*2 @@+@@@*4@@*5 @@*6ưGk2.2K@@5@@@*8@@*9@@*:аQk2.2:@@?@@@*<@@*=@@*>ڰ[k2.20$@@ @^j22'@y [aligned_error_hint ?loc ?sub ?footnote fmt ... aligned_hint] produces an error report where the potential [aligned_hint] message has been aligned with the main error message before being added to the list of submessages.km22lo3O3@@@@@@@\@@7@@@@@@@0error_of_printerq33q33@б#locг㠐!tq33q33@@ @@@*A3@,:@A@@б#subг$listq33q33@гN#msgq33q33@@ @@@*B@@@@@@*D" @@б(footnoteг +delayed_msgq33q33@@ @@@*E3@@б@б@гS)formatter*Format_docr33r33@ r33r34@@@@@@*FM @@б@А!a@*_J@*GXr34r34@@г$unitr34 r34@@ @@@*Hg@@@@@*I@@*Jl @@@'@@*K @@*Lq/@@б@А!a$w r34 r34@@г%errorr34r34 @@ @@@*M@@@8@@*N@@*O @@@#@@*P @@*Q%r33@@oi@@@*S@@*T@@*U/q33@@@@@*W@@*X@@*Y9q33$@@'@@@*[@@*\@@*]Cq33.@@ @Fq331@@^]@@3@@5error_of_printer_fileQt4"4&Rt4"4;@б@б@г)formatter*Format_docbt4"4>ct4"4H@ ft4"4Igt4"4R@@@@@@*`3ihhiiiii@*@A @@б@А!a@*mJ@*a zt4"4V{t4"4X@@г'$unitt4"4\t4"4`@@ @@@*b@@@@@*c@@*d! @@@)@@*e @@*f&1@@б@А!a$,t4"4et4"4g@@г/%errort4"4kt4"4p@@ @@@*g;@@@8@@*h@@*i@ @@@#@@*j @@*kEt4"4=@@@t4"4"@@^@@@@Lʐ : {1 Automatically reporting errors for raised exceptions} w4s4sw4s4@@@@@@3@^~@A5register_error_of_exny44y44@б@б@гy#exny44y44@@ @@@*n@@гA&optiony44y44@г%errory44y44@@ @@@*o3@@@@@@*q8 @@@$@@*r @@*s='@@г$unit y44 y44@@ @@@*tJ@@@@@*u@@*vO y44 @@@ y44@7 ] 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).  )z44 *616O@@@@@@@ B_@@@G =@@@@@@o,error_of_exn @6Q6U A6Q6a@б@г䠐#exn K6Q6c L6Q6f@@ @@@*w3 M L L M M M M M@8@A@@г&option Z6Q6 [6Q6@з"Ok e6Q6l f6Q6o@@г%error o6Q6s p6Q6x@@ @@@*x$@@@@@1Already_displayed |6Q6{ }6Q6@A@@@@@@Р!@@@@*zA@@@*{: 6Q6j 6Q6@@@:@@@*}A7@@@I@@*~ @@*FL<@@@ 6Q6Q?@@ `@@A@@L%ErrorJ 66 66@#@>@@@*@@A 66 66@ː h Raising [Error e] signals an error [e]; the exception will be caught and the error will be printed.  66 77@@@@@@@ a@@г%error 66@@ 3        @{5@A@@@@ ݐ@@@@@@*@*)@7Already_displayed_errorK 7 7* 7 7A@#@@@A 7 7 @ Raising [Already_displayed_error] signals an error which has already been printed. The exception will be caught, but nothing will be printed  7B7B 77@@@@@@@! b@@@@! @@@@@@@3!!!!!!!!@;e_@A $@,raise_errorf!77!77@б#locгp!t!77!77@@ @@@*3!!!!!!!!@E?@A@@б#subг $list!/77!078@г۠#msg!977!:77@@ @@@*@@@@@@*" @@б(footnoteг+delayed_msg!O78!P78@@ @@@*3@@б@г'format4!^8 8G!_8 8N@А!a@*L@*H!j8 8#!k8 8%@@г)formatter*Format_doc!x8 8'!y8 81@ !|8 82!}8 8;@@@@@@*a @@г!/$unit!8 8=!8 8A@@ @@@*o@@А!b@*L@*y!8 8C!8 8E@@@F<"@@@*!8 8"G@@А!aE!8 8R!8 8T@@@@@*L@@* @@mg@@@*@@* @@*!78@@@@@*@@*@@*!77@@@@@*@@*@@*!77$@@ @!77'@@!c@@)@@0report_exception!8V8Z!8V8j@б@г L)formatter!8V8l!8V8u@@ @@@*3!!!!!!!!@@A@@б@г!#exn!8V8y!8V8|@@ @@@*@@г!$unit"8V8"8V8@@ @@@*@@@@@*@@*# @@@+@@* @@*(.@@@"8V8V@ 2 ) Reraise the exception if it is unknown. "$88"%88@@@@@@@"=d@@"@ B"8@@@@@@G@  A@@b@B@@a@A@@@[@T@A@uF@?@@}@v:@ @@@h0@@@\5@@@A@:@ @@@@D@A@V@NHA@A@A@@@y@F @@i@% @  M@ - @  @ | "@  @ x %@  @  +@  @  :@ @@@k@71A@A@@K@DR@2l@e@@z@B@B@@@@3""""""""@@A@ H************************************************************************"A@@"A@L@ H "BMM"BM@ H OCaml "C"C@ H "D"D3@ H Xavier Leroy, projet Cristal, INRIA Rocquencourt "E44"E4@ H "F"F@ H Copyright 1996 Institut National de Recherche en Informatique et "G"G@ H en Automatique. "H"Hg@ H "Ihh"Ih@ H All rights reserved. This file is distributed under the terms of "J"J@ H the GNU Lesser General Public License version 2.1, with the #K#KN@ H special exception on linking described in the file LICENSE. #LOO#LO@ H # M# M@ H************************************************************************#N#N5@ * Source code locations (ranges of positions), used in parsetree. {b Warning:} this module is unstable and part of {{!Compiler_libs}compiler-libs}. # * [t] 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" - an 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. !'  * 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.  B* An arbitrary value of type [t]; describes an empty ghost range.  5* True for [Location.none], false any other location  > 7* Return an empty ghost range located in a given file.  [* 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]. @ o* [rhs_loc n] returns the location of the symbol at position [n], starting at 1, in the current parser rule. 3* file, line, char Ҡ1* {1 Input info} Ϡ This is used for reporting errors coming from the toplevel. When running a toplevel session (i.e. when [!input_name] is "//toplevel//"), [!input_phrase_buffer] should be [Some buf] where [buf] contains the last toplevel phrase. #9h#:l@ "* {1 Toplevel-specific functions} 6* {1 Rewriting path }  * [rewrite_absolute_path path] rewrites [path] to honor the BUILD_PATH_PREFIX_MAP variable if it is set. It does not check whether [path] is absolute or not. The result is as follows: - If BUILD_PATH_PREFIX_MAP is not set, just return [path]. - otherwise, 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} c * [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: - [None], means either {ul {- BUILD_PATH_PREFIX_MAP is not set and [path] does not exists, or} {- no source prefixes of [path] in the mapping were found,}} - [Some target], means [target] exists and either {ul {- BUILD_PATH_PREFIX_MAP is not set and [target] = [path], or} {- [target] is the first file (in priority order) that [path] mapped to that exists in the file system.}} - [Not_found] 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}  * [rewrite_find_all_existing_dirs dir] accumulates a list of existing directories, [dirs], that are the result of mapping a potentially abstract directory, [dir], 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: - [[]], means either {ul {- BUILD_PATH_PREFIX_MAP is not set and [dir] is not an existing directory, or} {- if set, then there were no matching prefixes of [dir].}} - [Some dirs], means dirs are the directories found. Either {ul {- BUILD_PATH_PREFIX_MAP is not set and [dirs = [dir]], or} {- it was set and [dirs] are the mapped existing directories.}} - Not_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}  * [absolute_path path] first makes an absolute path, [s] from [path], prepending the current working directory if [path] was relative. Then [s] is rewritten using [rewrite_absolute_path]. Finally the result is normalized by eliminating instances of ['.'] or ['..']. m9* {1 Printing locations} R s* In -absname mode, return the absolute path for this filename. Otherwise, returns the filename unchanged.  .* {1 Toplevel-specific location highlighting}  $* {1 Reporting errors and warnings}  .* {2 The type of reports and report printers}  1 The entry point #`!!#a!!@ * 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. X +* {2 Report printers used in the compiler} ꠠ D* Detects the terminal capabilities and selects an adequate printer V:* {2 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. L9* {1 Reporting warnings} 1 0* {2 Converting a [Warnings.t] into a [report]} ! x* [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. 8 .* Original warning reporter for use in hooks.  Ġ8* {2 Printing warnings}  ^* Prints a warning. This is simply the composition of [report_warning] and [print_report].   V* Same as [print_warning], but uses [!formatter_for_warnings] as output formatter.  7* {1 Reporting alerts}  .* {2 Converting an [Alert.t] into a [report]}  r* [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.  #6* {2 Printing alerts}   [* Prints an alert. This is simply the composition of [report_alert] and [print_report].  T* Same as [print_alert], but uses [!formatter_for_warnings] as output formatter.  7>* Prints a deprecation alert.  =* Prints an arbitrary alert.  Q* Prints an alert that -I +lib has been automatically added to the load path  |* [deprecated_script_alert command] prints an alert that [command foo] has been deprecated in favour of [command ./foo] l7* {1 Reporting errors} Q G* An [error] is a [report] which [report_kind] must be [Report_error]. 0 * [aligned_error_hint ?loc ?sub ?footnote fmt ... aligned_hint] produces an error report where the potential [aligned_hint] message has been aligned with the main error message before being added to the list of submessages.R ;* {1 Automatically 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).  i* 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. @-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I'parsing"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c$$ S/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores >10/.-,+*)('&%$#"! @@0XniCj\-qP<3$!$ $ $!$!$!$!$!@$@@8CamlinternalFormatBasics0|.e1R$|o0CamlinternalLazy0zY# #4#-*Format_doc0uy@GmWUࠠ$L0nBɊOn?7~ؠ&Stdlib0t0VoS%{<F:.Stdlib__Buffer0,I[?z.Stdlib__Domain0'Ϳo\0m.K.Stdlib__Either0HD ?|>.Stdlib__Format00FClW,Stdlib__Lazy0$1mlࠠ.Stdlib__Lexing0^m|e+Stdlib__Seq0?72#[O+Stdlib__Sys0b'8=OIn-Stdlib__Uchar0=H^V9>ɠ" 0Ef{&@0nBɊOn?7~A` @o@ 1 m@@  @@@u1@@@  İ  R@K@%@Ґ:@ǐ@  @  @ԕհ"".@o2~@ЕX` @%fR~%B Y @F@`i@Xb@ R @  "Ӓ##@@@*@ Ő Km/!"%#"@;@+Ű!>!#"@@>E@@ٕH@Ӱː @@5@@ ! AR@@@@^v@ϐ @jϰ g @@@{@7#B"@@@װn!"@@     V@Cڐ  !%@@A{@D@@@<@V@@P@@