aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorHugo Herbelin2020-03-04 21:35:49 +0100
committerHugo Herbelin2020-03-04 21:35:49 +0100
commit33ab70ac3a8d08afb67d9602d7c23da7133ad0f4 (patch)
tree7159a39d683a05e4239ac3a0d50dd20eb8d6719b /engine
parentcfecd54efac7191690f37af1edcc91389ae180e1 (diff)
parent54562510ed05bacdf7c9c2a41bb104a68aeaa1c0 (diff)
Merge PR #11715: Be robust in calculating visible ids for non-registered constants.
Reviewed-by: herbelin
Diffstat (limited to 'engine')
-rw-r--r--engine/namegen.ml16
1 files changed, 9 insertions, 7 deletions
diff --git a/engine/namegen.ml b/engine/namegen.ml
index bcc8c34a4d..d2c37fb716 100644
--- a/engine/namegen.ml
+++ b/engine/namegen.ml
@@ -259,15 +259,17 @@ let visible_ids sigma (nenv, c) =
let (gseen, vseen, ids) = !accu in
let g = global_of_constr c in
if not (GlobRef.Set_env.mem g gseen) then
- begin
- try
let gseen = GlobRef.Set_env.add g gseen in
- let short = Nametab.shortest_qualid_of_global Id.Set.empty g in
- let dir, id = repr_qualid short in
- let ids = if DirPath.is_empty dir then Id.Set.add id ids else ids in
+ let ids = match Nametab.shortest_qualid_of_global Id.Set.empty g with
+ | short ->
+ let dir, id = repr_qualid short in
+ if DirPath.is_empty dir then Id.Set.add id ids else ids
+ | exception Not_found ->
+ (* This may happen if given pathological terms or when manipulating
+ open modules *)
+ ids
+ in
accu := (gseen, vseen, ids)
- with Not_found when !Flags.in_debugger || !Flags.in_toplevel -> ()
- end
| Rel p ->
let (gseen, vseen, ids) = !accu in
if p > n && not (Int.Set.mem p vseen) then