diff options
author | Matthieu Sozeau <mattam@mattam.org> | 2016-10-12 16:18:02 +0200 |
---|---|---|
committer | Matthieu Sozeau <mattam@mattam.org> | 2016-10-21 17:43:12 +0200 |
commit | 0aec9033a0b78ee1629f7aabce1c8a2e3cfbe619 (patch) | |
tree | 5f4f09a2796572e98d09208c46f52a919ba4cc8f /engine | |
parent | f667e270116aaf46f1c27b5a925d3ffaf0d31365 (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.ml | 4 | ||||
-rw-r--r-- | engine/termops.mli | 1 |
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 *) |