aboutsummaryrefslogtreecommitdiffhomepage
path: root/plugins/ssr
diff options
context:
space:
mode:
authorGravatar Emilio Jesus Gallego Arias <e+git@x80.org>2017-12-27 20:22:23 +0100
committerGravatar Emilio Jesus Gallego Arias <e+git@x80.org>2018-02-28 17:59:12 +0100
commit886a9c2fb25e32bd87b3fce38023b3e701134d23 (patch)
tree973d6b78a010aae46ca3e7f29a06fde1f14d22c1 /plugins/ssr
parentf726e860917b56abc94f21d9d5add7594d23bb6d (diff)
[econstr] Continue consolidation of EConstr API under `interp`.
This commit was motivated by true spurious conversions arising in my `to_constr` debug branch. The changes here need careful review as the tradeoffs are subtle and still a lot of clean up remains to be done in `vernac/*`. We have opted for penalize [minimally] the few users coming from true `Constr`-land, but I am sure we can tweak code in a much better way. In particular, it is not clear if internalization should take an `evar_map` even in the cases where it is not triggered, see the changes under `plugins` for a good example. Also, the new return type of `Pretyping.understand` should undergo careful review. We don't touch `Impargs` as it is not clear how to proceed, however, the current type of `compute_implicits_gen` looks very suspicious as it is called often with free evars. Some TODOs are: - impargs was calling whd_all, the Econstr equivalent can be either + Reductionops.whd_all [which does refolding and no sharing] + Reductionops.clos_whd_flags with all as a flag.
Diffstat (limited to 'plugins/ssr')
-rw-r--r--plugins/ssr/ssrcommon.ml2
-rw-r--r--plugins/ssr/ssrvernac.ml48
-rw-r--r--plugins/ssr/ssrview.ml3
3 files changed, 8 insertions, 5 deletions
diff --git a/plugins/ssr/ssrcommon.ml b/plugins/ssr/ssrcommon.ml
index 4ae746288..1a02fb91c 100644
--- a/plugins/ssr/ssrcommon.ml
+++ b/plugins/ssr/ssrcommon.ml
@@ -203,7 +203,7 @@ let glob_constr ist genv = function
let vars = Id.Map.fold (fun x _ accu -> Id.Set.add x accu) ist.Tacinterp.lfun Id.Set.empty in
let ltacvars = {
Constrintern.empty_ltac_sign with Constrintern.ltac_vars = vars } in
- Constrintern.intern_gen Pretyping.WithoutTypeConstraint ~ltacvars genv ce
+ Constrintern.intern_gen Pretyping.WithoutTypeConstraint ~ltacvars genv Evd.(from_env genv) ce
| rc, None -> rc
let pf_intern_term ist gl (_, c) = glob_constr ist (pf_env gl) c
diff --git a/plugins/ssr/ssrvernac.ml4 b/plugins/ssr/ssrvernac.ml4
index 8e6e0347f..96ded5abf 100644
--- a/plugins/ssr/ssrvernac.ml4
+++ b/plugins/ssr/ssrvernac.ml4
@@ -335,7 +335,8 @@ let push_rels_assum l e =
push_rels_assum l e
let coerce_search_pattern_to_sort hpat =
- let env = Global.env () and sigma = Evd.empty in
+ let env = Global.env () in
+ let sigma = Evd.(from_env env) in
let mkPApp fp n_imps args =
let args' = Array.append (Array.make n_imps (Pattern.PMeta None)) args in
Pattern.PApp (fp, args') in
@@ -393,8 +394,9 @@ let interp_search_arg arg =
interp_search_notation ~loc s key
| RGlobSearchSubPattern p ->
try
- let intern = Constrintern.intern_constr_pattern in
- Search.GlobSearchSubPattern (snd (intern (Global.env()) p))
+ let env = Global.env () in
+ let _, p = Constrintern.intern_constr_pattern env (Evd.from_env env) p in
+ Search.GlobSearchSubPattern p
with e -> let e = CErrors.push e in iraise (ExplainErr.process_vernac_interp_error e)) arg in
let hpat, a1 = match arg with
| (_, Search.GlobSearchSubPattern (Pattern.PMeta _)) :: a' -> all_true, a'
diff --git a/plugins/ssr/ssrview.ml b/plugins/ssr/ssrview.ml
index 61b65e347..f2990070b 100644
--- a/plugins/ssr/ssrview.ml
+++ b/plugins/ssr/ssrview.ml
@@ -55,7 +55,8 @@ let in_viewhint =
Libobject.classify_function = classify_viewhint }
let glob_view_hints lvh =
- List.map (Constrintern.intern_constr (Global.env ())) lvh
+ let env = Global.env () in
+ List.map (Constrintern.intern_constr env Evd.(from_env env)) lvh
let add_view_hints lvh i = Lib.add_anonymous_leaf (in_viewhint (i, lvh))