12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152(************************************************************************)(* * The Coq Proof Assistant / The Coq Development Team *)(* v * Copyright INRIA, CNRS and contributors *)(* <O___,, * (see version control and CREDITS file for authors & dates) *)(* VV/ **************************************************************)(* // * This file is distributed under the terms of the *)(* * GNU Lesser General Public License Version 2.1 *)(* * (see LICENSE file for the text of the license) *)(************************************************************************)(************************************************************************)(* SerAPI: Coq interaction protocol with bidirectional serialization *)(************************************************************************)(* Copyright 2016-2019 MINES ParisTech -- License LGPL 2.1+ *)(* Copyright 2019-2023 Inria -- License LGPL 2.1+ *)(* Written by: Emilio J. Gallego Arias and others *)(************************************************************************)openSexplib.StdmoduleLoc=Ser_locmoduleL=structtype'at={v:'a;loc:Loc.toption[@ignore][@hash.ignore];}[@@derivingsexp,yojson,hash,compare]endtype'at='aCAst.t=private{v:'a;loc:Loc.toption;}lett_of_sexpfs=let{L.v;loc}=L.t_of_sexpfsinCAst.make?loc:locvletsexp_of_tf{CAst.v;loc}=L.sexp_of_tf{L.v;loc}letof_yojsonfjson=Ppx_deriving_yojson_runtime.(L.of_yojsonfjson>|=fun{L.v;loc}->CAst.make?loc:locv)letto_yojsonf{CAst.v;loc}=L.to_yojsonf{L.v;loc}lethash_fold_tfst{CAst.v;loc}=L.hash_fold_tfst{L.v;loc}letcomparef{CAst.v=v1;loc=l1}{CAst.v=v2;loc=l2}=L.comparef{L.v=v1;loc=l1}{L.v=v2;loc=l2}letomit_att=reffalseletsexp_of_tfx=if!omit_attthenfx.CAst.velsesexp_of_tfx(* let to_yojson f x =
if !omit_att then ... *)