12345678910111213141516171819202122232425262728293031323334353637383940414243(************************************************************************)(* * The Coq Proof Assistant / The Coq Development Team *)(* v * INRIA, CNRS and contributors - Copyright 1999-2021 *)(* <O___,, * (see CREDITS file for the list of authors) *)(* \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) *)(************************************************************************)(************************************************************************)(* Coq serialization API/Plugin *)(* Copyright 2016-2019 MINES ParisTech -- Dual License LGPL 2.1 / GPL3+ *)(* Copyright 2020-2021 Inria *)(* Written by: Emilio J. Gallego Arias *)(************************************************************************)(* Status: Experimental *)(************************************************************************)(* Duplicate with sertop, fix in different refactoring *)letcheck_pending_proofs~pstate=Option.iter(fun_pstate->(* let pfs = Proof_global.get_all_proof_names pstate in *)letpfs=[]inifnotCList.(is_emptypfs)thenletmsg=letopenPpinseq[str"There are pending proofs: ";pfs|>List.rev|>prlist_with_seppr_commaNames.Id.print;str"."]inCErrors.user_errmsg)pstateletsave_vo~doc?ldir~pstate~in_file()=let_doc=Stm.join~docincheck_pending_proofs~pstate;letldir=matchldirwith|None->Stm.get_ldir~doc(* EJGA: When in interactive mode, the above won't work due to a
STM bug, we thus allow SerAPI clients to override it *)|Someldir->ldirinletout_vo=Filename.(remove_extensionin_file)^".vo"inlettodo_proofs=Library.ProofsTodoNoneinLibrary.save_library_totodo_proofs~output_native_objects:falseldirout_vo(Global.opaque_tables())