From aea9ef97a2173d9ff7efc2dcc0aed0c420132b83 Mon Sep 17 00:00:00 2001 From: herbelin Date: Sat, 8 Oct 2011 12:45:02 +0000 Subject: Scheme names: Use unprobable names + ensure names do not hide existing names when schemes are generated for internal use of Coq. Ideally, I would like to add these names asynchronously in name spaces relevant for the corresponding inductive type, what modules do not support since modules cannot be reopened. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14529 85f007b7-540e-0410-9357-904b9bb8a0f7 --- toplevel/ind_tables.ml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/toplevel/ind_tables.ml b/toplevel/ind_tables.ml index 51dc1dc30..bb5ab795d 100644 --- a/toplevel/ind_tables.ml +++ b/toplevel/ind_tables.ml @@ -109,8 +109,19 @@ let declare_individual_scheme_object s ?(aux="") f = let declare_scheme kind indcl = Lib.add_anonymous_leaf (inScheme (kind,indcl)) +let is_visible_name id = + try ignore (Nametab.locate (Libnames.qualid_of_ident id)); true + with Not_found -> false + +let compute_name internal id = + match internal with + | KernelVerbose | UserVerbose -> id + | KernelSilent -> + Namegen.next_ident_away_from (add_prefix "internal_" id) is_visible_name + let define internal id c = let fd = declare_constant ~internal in + let id = compute_name internal id in let kn = fd id (DefinitionEntry { const_entry_body = c; -- cgit v1.2.3