aboutsummaryrefslogtreecommitdiffhomepage
path: root/engine
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <mattam@mattam.org>2016-10-12 16:18:02 +0200
committerGravatar Matthieu Sozeau <mattam@mattam.org>2016-10-21 17:43:12 +0200
commit0aec9033a0b78ee1629f7aabce1c8a2e3cfbe619 (patch)
tree5f4f09a2796572e98d09208c46f52a919ba4cc8f /engine
parentf667e270116aaf46f1c27b5a925d3ffaf0d31365 (diff)
sections/hints: prevent Not_found in get_type_of
due to cleared/reverted section variables. This fixes the get_type_of but requires keeping information around about the section hyps available in goals during resolution. It's optimized for the non-section case (should incur no cost there), and the case where no section variables are cleared.
Diffstat (limited to 'engine')
-rw-r--r--engine/termops.ml4
-rw-r--r--engine/termops.mli1
2 files changed, 5 insertions, 0 deletions
diff --git a/engine/termops.ml b/engine/termops.ml
index 17e56ec31..35cacc65b 100644
--- a/engine/termops.ml
+++ b/engine/termops.ml
@@ -599,6 +599,10 @@ let collect_vars c =
| _ -> fold_constr aux vars c in
aux Id.Set.empty c
+let vars_of_global_reference env gr =
+ let c, _ = Universes.unsafe_constr_of_global gr in
+ vars_of_global (Global.env ()) c
+
(* Tests whether [m] is a subterm of [t]:
[m] is appropriately lifted through abstractions of [t] *)
diff --git a/engine/termops.mli b/engine/termops.mli
index 0a7ac1f26..fd8edafbc 100644
--- a/engine/termops.mli
+++ b/engine/termops.mli
@@ -121,6 +121,7 @@ val dependent_in_decl : constr -> Context.Named.Declaration.t -> bool
val count_occurrences : constr -> constr -> int
val collect_metas : constr -> int list
val collect_vars : constr -> Id.Set.t (** for visible vars only *)
+val vars_of_global_reference : env -> Globnames.global_reference -> Id.Set.t
val occur_term : constr -> constr -> bool (** Synonymous
of dependent
Substitution of metavariables *)