Caml1999I037DxE/Signature_group(sig_item;@@#src@@%Types.signature_item@@@ǰ:typing/signature_group.mliaosb@@B@+post_ghosts@@$listK.signature_item@@@@@@ưcd@@-C@@@A@@@@@_[[e @@@@1@@A@'flatten@8@@@1)signature@@@@@@/hAA0hAi@@FD@@.core_rec_group;@@'Not_rec@@@@@BlCl@@YF@)Rec_groupC+@@@@@@@@TmUm@@kG@@@A@@@@@Xk@@@@nE@A@)rec_items@0@@@]E@@@@@@@@@np((op(V@@H@@)rec_group;@@*pre_ghosts@@s.signature_item@@@@@@԰v  v  D@@J@%group@@-@@@Ұv  Ev  Y@@K@@@A@@@@@u  v  [@@@@I@A@$next@)signature@@@&optionL@@@@@נ@)signature@@@@@@@@@@@} - -} - n@@L@@#seq@)signature@@@&Stdlib#Seq!t(@@@@@@@@@~ o o~ o @@M@@$iter@@9@@@$unitF@@@@@@)signature@@@@@@@@@@@@  @  @@N@@$fold@@#acc@@a@@@ @@@@@ @!)signature@@@@@@@@@@A   A  @@6O@@.in_place_patch;@@&ghosts@@5)signature@@@3E o q4E o @@JQ@*replace_by@@G.signature_item@@@@@@FF  GF  @@]R@@@A@@@@@JD W WKH  @@@@aP@A@0replace_in_place@&ghostsa)signature@@@@i.signature_item@@@@!a@@S@@@@@@@@@@@@@)signature@@@۠@@)signature@@@@@@@@@@@@@P  S h @@S@@@:Ϡ/Signature_group0ǛÀ5dkUǠ(Warnings0mJɒkgrWA+9*X*Format_doc0]mWϓ:Mݠ0CamlinternalLazy0&͂7 Pˆ8CamlinternalFormatBasics0%FU(Q/Tu(Asttypes0>n{T8cئ@@@Caml1999T037>'P$+C/Signature_group*ocaml.text&_none_@@A  Iterate on signature by syntactic group of items Classes, class types and private row types adds ghost components to the signature where they are defined. When editing or printing a signature it is therefore important to identify those ghost components. This module provides type grouping together ghost components with the corresponding core item (or recursive group) and the corresponding iterators. :typing/signature_group.mliP77[@@@@@@3@@@@@@#intA;@@@A@@@@@:@A@$charB;@@A@@@@@>@A@&stringQ;@@ A@@@@@B@@@%bytesC;@@ A@@@@@F@@@%floatD;@@A@@@@@J@@@$boolE;@@%falsec@@T@$trued@@Z@@@A@@@@@[@A@$unitF;@@"()e@@e@@@A@@@@@f@A@ #exnG;@@@A@@@@@j@@@#effH;@@O@A@A@@@@@@s@@@,continuationI;@@Q@@P@B@A@nY@@@@@@@@@%arrayJ;@@R@A@A@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern @ @0Division_by_zero]#@@@A  @+End_of_file\#$@@@A@'FailureY#,@'@@A!$$@0Invalid_argumentX#5@0@@A*$-#-@-Match_failureV#>@@=@9@;@@a@@A;5>4>@)Not_foundZ#O@@@AC=F<F@-Out_of_memoryW#W@@@AKENDN@.Stack_overflow^#_@@@ASMVLV@.Sys_blocked_io_#g@@@A[U^T^@)Sys_error[#o@j@@Ad^g]g@:Undefined_recursive_modulea#x@@w@s@u@@h@@Auoxnx@:Continuation_already_takenb#@@@A}wv@&Stdlib@AxA+(sig_itemA_[`_[h@@;@@#src@@%Types.signature_item@@@ ΰaosb@)ocaml.doc4 the syntactic item aoao@@@@@@@B@+post_ghosts@@+$.signature_item@@@ @@@ Ӱcd@# ' ghost classes types are post-declared dd@@@@@@@C@@@A@@@@@_[[e @5 e Classes and class types generate ghosts signature items, we group them together before printing ]^;Z@@@@@@@@@@@@#TTKaov@:@@Ш@гW%Typesaoxao}@\ao~ao@@@f3@t;@@@A@@@@@-*@@@A @@m@@ @eba`@``@@@`@`@#\\Pc@A@@Ш@г_$list cc@гd%Typescc@kcc@@@s1@@@x2 @@{@@ 5@p3nm@mm@@@m@m@@A@i>gf@ff@@@f@f@@6ts@'flattenBhAEChAL@б@г͠(sig_itemMhANNhAV@@ @@@ 3ONNOOOOO@N@A@@г)signature%Types`hAZahA_@ dhA`ehAi@@@@@@  @@@@@ ! @@@phAA @ސ 0 [flatten sig_item] is [x.src :: x.post_ghosts] }g  ~g @@@@@@@@D@@@@@@@@@:A+.core_rec_groupBkk@@;@@'Not_rec&@@@ @@ll@@F@)Rec_group08@@@ @@@ @@mm@@G@@@A@@@@@k@) * A group of mutually recursive definition jkkjk@@@@@@@@@E@@#33ll@,@г5(sig_iteml6@@<3@pM;@@@A@@@@@&$@@@A<@@@@>@#::mm@.@г<$listm8@г@(sig_itemmm@@H@@@MC@@@@E@@A@Ah @?@??@@@?@?@@3@*@AMP@)rec_itemsp(,p(5@б@г.core_rec_groupp(7p(E@@ @@@ 3@E@A@@г$list*p(R+p(V@г(sig_item4p(I5p(Q@@ @@@ @@@@@@  @@@$@@ !'@@@Dp((@ 9 [rec_items group] is the list of sig_items in the group QoRo'@@@@@@@jH@@*@e@@@@@@@A+)rec_groupCiu  ju  @@;@@*pre_ghosts@@.signature_item@@@ @@@ }v  ~v  D@@J@%group@@@@@ v  Ev  Y@@K@@@A@@@@@u  v  [@ Private #row types are manifested as a sequence of definitions preceding a recursive group, we collect them and separate them from the syntactic recursive group. rXXt @@@@@@@@@I@@#22&v  (@%@@Ш@г5$listv  ?v  C@г:%Typesv  *v  /@Av  0v  >@@@I3@\;@@@A@@@@@74@@&@A @@@S@@V@@  @K@#GGBv  J@A@@Ш@гJ.core_rec_groupv  KK@@QL@@T@@ @P@@A@LE萠JI@II@@@I@I@@3@$@AXW@$next} - 1} - 5@б@гi)signature%Types} - 7} - <@ } - =} - F@@@@@@ 3@H@A @@гo&option} - h} - n@В@г)rec_group} - K} - T@@ @@@ @@@г)signature%Types1} - W2} - \@ 5} - ]6} - f@@@@@@ 5 @@@@ @ @@ <% @@@: @@@ AH} - J8@@@H@@ EP;@@@N} - ->@ The sequence [seq signature] iterates over [signature] {!rec_group} by {!rec_group}. The second element of the tuple in the {!full_seq} case is the not-yet traversed part of the signature. [x ] ]\| * ,@@@@@@@tL@@N@o@@@@@@d#seqʠr~ o ss~ o v@б@г)signature%Types~ o x~ o }@ ~ o ~~ o @@@@@@ 3@A@A @@г#Seq!t~ o ~ o @ ~ o ~ o @@г?)rec_group~ o ~ o @@ @@@ 9"@@@ @@@ ;' @@@-@@ <*5@@@~ o o@@M@@@@0$iterˠ@  @  @б@б@гg)rec_group@  @  @@ @@@ =3@Ki!@A@@г$unit@  @  @@ @@@ >@@@@@ ?@@б@гb)signature%Types@  @  @ @  @  @@@@@@ @* @@г$unit@  @  @@ @@@ A7@@@@@ B:@@@-@@ C=@   @@@@  @@.N@@@@D$fold̠!A  "A  @б@б@А#acc@ MD@ D3,++,,,,,@[r@A2A  3A  @@б@гԠ)rec_group=A  >A  @@ @@@ E@@А#accGA  HA  @@@ !@@ F@@@$@@ G@@б@А#acc*%UA  VA  @@б@г)signature%TypesdA  eA  @ hA  iA  @@@@@@ H? @@А#accHCsA  tA  @@@ M@@ IH@@@P@@ JK&@@@1@@ KN~A   @@@A  @@O@@@@UA+.in_place_patchDD W \D W j@@;@@&ghosts@@ )signature@@@ NE o qE o @ = updated list of ghost items E o E o @@@@@@@Q@*replace_by@@-.signature_item@@@ Q@@@ SF  F  @, # replacement for the selected item G  G  @@@@@@@R@@@A@@@@@D W WH  @> 2 Describe how to amend one element of a signature C  C  V@@@@@@@@@P@@#PPIE o w@:@@Ш@гS%TypesE o yE o ~@ZE o E o @@@b3@{q;@@@A@@@@@.+@@@A @@j@@ O@dlba@aa@@@a@a@#]]QF  @B@@Ш@г`&optionF  F  @гe%Types"F  #F  @l&F  'F  @@@t2@@@y3 @@|@@ T6@q=on@nn@@@n@n@@A@jHhg@gg@@@g@g@@3@??@@@@@@K@Avu@0replace_in_placeРMP  NP  @б@б&ghostsг)signature%Types`Q  aQ  @ dQ  eQ  )@@@@@@ h3gffggggg@s@A @@б@г.signature_item%TypeszQ  -{Q  2@ ~Q  3Q  A@@@@@@ i @@г렐&optionR B _R B e@В@А!a@ yE@ j1R B JR B L@@@г.in_place_patchR B OR B ]@@ @@@ kB@@@@@ @@ lI @@@/ @@@ nNR B I-@@@;@@ oRC0@@lX@@ pUQ  4@@б@г;)signature%TypesS h mS h r@ S h sS h |@@@@@@ qn @@г?&optionS h S h @В@А!aTS h S h @@@гg)signature%TypesS h S h @ S h S h @@@@@@ r @@@@s@ @@ s! @@@3 @@@ uS h 1@@@?@@ vG4@@@Z@@ wQ  8@@@P  ;@ [!replace_in_place patch sg] replaces the first element of the signature for which [patch ~ghosts component] returns [Some (value,patch)]. The [ghosts] list is the current prefix of ghost components associated to [component] (J  )O  @@@@@@@AS@@K@<@@@@@@@A@@A@3@A@Z@@3@,@A@4@@3JIIJJJJJ@6@A@ H************************************************************************SA@@TA@L@ H YBMMZBM@ H OCaml _C`C@ H eDfD3@ H Florian Angeletti, projet Cambium, Inria Paris kE44lE4@ H qFrF@ H Copyright 2021 Institut National de Recherche en Informatique et wGxG@ H en Automatique. }H~Hg@ H IhhIh@ H All rights reserved. This file is distributed under the terms of JJ@ H the GNU Lesser General Public License version 2.1, with the KKN@ H special exception on linking described in the file LICENSE. LOOLO@ H MM@ H************************************************************************NN5@ * Iterate on signature by syntactic group of items Classes, class types and private row types adds ghost components to the signature where they are defined. When editing or printing a signature it is therefore important to identify those ghost components. This module provides type grouping together ghost components with the corresponding core item (or recursive group) and the corresponding iterators.  f* Classes and class types generate ghosts signature items, we group them together before printing ֠5* the syntactic item  (* ghost classes types are post-declared  1* [flatten sig_item] is [x.src :: x.post_ghosts] 6 +* A group of mutually recursive definition  :* [rec_items group] is the list of sig_items in the group h * Private #row types are manifested as a sequence of definitions preceding a recursive group, we collect them and separate them from the syntactic recursive group. ! * The sequence [seq signature] iterates over [signature] {!rec_group} by {!rec_group}. The second element of the tuple in the {!full_seq} case is the not-yet traversed part of the signature. d 3* Describe how to amend one element of a signature 堠>* updated list of ghost items  $* replacement for the selected item  * [!replace_in_place patch sg] replaces the first element of the signature for which [patch ~ghosts component] returns [Some (value,patch)]. The [ghosts] list is the current prefix of ghost components associated to [component] @-./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&typing"-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 =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@0>@J$//^C3      @@@(Asttypes0>n{T8cئ8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ*Format_doc0]mWϓ:Mݠ%Ident0">WA+9*X,Identifiable0 {d\FX'`(Location0a7cK_H%9)Longident0s `7mɕc+Outcometree0kX%d5Q/+)Parsetree0T鿁ۘ7Qu$Path0Y2kf֯J._Ϡ)Primitive0²~$xzT෠%Shape0oNՄBH}0ǛÀ5dkUǠ&Stdlib0Lku]8_٠.Stdlib__Buffer08APF< t..Stdlib__Domain0:M;׉<O$Ġ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ܚ#G7m|/Stdlib__Hashtbl0ѱN][/!,Stdlib__Lazy0* -S$.)"0D.Stdlib__Lexing0e<.V +Stdlib__Map0L5xE|O0~,J-+Stdlib__Seq0nwzG&amg+Stdlib__Set0\$;7 +Stdlib__Sys0 -ռ鱦s5/-Stdlib__Uchar056uf4[_.Type_immediacy0A^abOhՠ̐0^Y~# )Unit_info0ڀh%((Warnings0mJɒkgr