aboutsummaryrefslogtreecommitdiffhomepage
path: root/interp
diff options
context:
space:
mode:
authorGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2017-10-04 23:55:54 +0200
committerGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2017-10-05 00:31:40 +0200
commit26f216653aed171a70513d3f5ece059ab30bcd73 (patch)
tree94f94e0af01f74136cec2637ad29f3c1401436e2 /interp
parentb9740771e8113cb9e607793887be7a12587d0326 (diff)
Fixing #5762 (supporting imp. args. in "where" clause of an inductive def.).
This allows e.g. the following to work: Reserved Notation "* a" (at level 70). Inductive P {n : nat} : nat -> Prop := c m : *m where "* m" := (P m). We seize this opportunity to make main calls to Metasyntax to depend on an arbitrary env rather than on Global.env. Incidentally, this fixes a little coqdoc bug in classifying the inductive type referred to in the "where" clause.
Diffstat (limited to 'interp')
-rw-r--r--interp/constrintern.ml4
-rw-r--r--interp/constrintern.mli2
2 files changed, 2 insertions, 4 deletions
diff --git a/interp/constrintern.ml b/interp/constrintern.ml
index 6f7c6c827..d19f3b7f6 100644
--- a/interp/constrintern.ml
+++ b/interp/constrintern.ml
@@ -2133,8 +2133,7 @@ let intern_constr_pattern env ?(as_type=false) ?(ltacvars=empty_ltac_sign) c =
~pattern_mode:true ~ltacvars env c in
pattern_of_glob_constr c
-let interp_notation_constr ?(impls=empty_internalization_env) nenv a =
- let env = Global.env () in
+let interp_notation_constr env ?(impls=empty_internalization_env) nenv a =
(* [vl] is intended to remember the scope of the free variables of [a] *)
let vl = Id.Map.map (fun typ -> (ref true, ref None, typ)) nenv.ninterp_var_type in
let c = internalize (Global.env()) {ids = extract_ids env; unb = false;
@@ -2213,4 +2212,3 @@ let interp_context_evars ?(global_level=false) ?(impl_env=empty_internalization_
let int_env,bl = intern_context global_level env impl_env params in
let x = interp_glob_context_evars env evdref shift bl in
int_env, x
-
diff --git a/interp/constrintern.mli b/interp/constrintern.mli
index 0a4eaf838..75e99dd9b 100644
--- a/interp/constrintern.mli
+++ b/interp/constrintern.mli
@@ -182,7 +182,7 @@ val global_reference_in_absolute_module : DirPath.t -> Id.t -> Globnames.global_
(** Interprets a term as the left-hand side of a notation. The returned map is
guaranteed to have the same domain as the input one. *)
-val interp_notation_constr : ?impls:internalization_env ->
+val interp_notation_constr : env -> ?impls:internalization_env ->
notation_interp_env -> constr_expr ->
(bool * subscopes * notation_var_internalization_type) Id.Map.t *
notation_constr * reversibility_flag