1234567891011121314151617181920212223242526272829303132333435363738394041424344(************************************************************************)(* * 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.ProofsTodoNoneinlet()=Library.save_library_totodo_proofs~output_native_objects:falseldirout_voin()