aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2020-10-02 18:41:39 +0200
committerPierre-Marie Pédrot2020-11-04 13:43:57 +0100
commit511a3eae36d3b57afbbb37b586ef71adf094f8ca (patch)
treea872f16ec4ad0f16b4c906483c712f08c376ca4c
parentae4346d74acf0d3e48a9660758dd7c064d14f749 (diff)
Encapsulate the last use of IsConstr in the Hints API.
-rw-r--r--tactics/hints.ml8
-rw-r--r--tactics/hints.mli5
-rw-r--r--vernac/comHints.ml10
3 files changed, 15 insertions, 8 deletions
diff --git a/tactics/hints.ml b/tactics/hints.ml
index 0170487b2e..b8bd459616 100644
--- a/tactics/hints.ml
+++ b/tactics/hints.ml
@@ -1347,6 +1347,14 @@ let add_hints ~locality dbnames h =
| HintsExternEntry (info, tacexp) ->
add_externs info tacexp ~local ~superglobal dbnames
+let hint_constr env sigma ~poly c =
+ let c, diff = prepare_hint true env sigma c in
+ let diff, uctx =
+ if poly then Some diff, Univ.ContextSet.empty
+ else None, diff
+ in
+ IsConstr (c, diff), uctx
+
let expand_constructor_hints env sigma lems =
List.map_append (fun (evd,lem) ->
match EConstr.kind sigma lem with
diff --git a/tactics/hints.mli b/tactics/hints.mli
index 1bbb506761..e74519f12a 100644
--- a/tactics/hints.mli
+++ b/tactics/hints.mli
@@ -199,8 +199,9 @@ val current_pure_db : unit -> hint_db list
val add_hints : locality:Goptions.option_locality -> hint_db_name list -> hints_entry -> unit
-val prepare_hint : bool (* Check no remaining evars *) ->
- env -> evar_map -> evar_map * constr -> (constr * Univ.ContextSet.t)
+val hint_constr :
+ env -> evar_map -> poly:bool -> evar_map * constr -> hint_term * Univ.ContextSet.t
+ [@ocaml.deprecated "Declare a hint constant instead"]
(** A constr which is Hint'ed will be:
- (1) used as an Exact, if it does not start with a product
diff --git a/vernac/comHints.ml b/vernac/comHints.ml
index 9eac558908..b5e53208ca 100644
--- a/vernac/comHints.ml
+++ b/vernac/comHints.ml
@@ -85,14 +85,12 @@ let interp_hints ~poly h =
let env = Global.env () in
let sigma = Evd.from_env env in
let f poly c =
- let evd, c = Constrintern.interp_open_constr env sigma c in
let env = Global.env () in
let sigma = Evd.from_env env in
- let c, diff = Hints.prepare_hint true env sigma (evd, c) in
- if poly then (Hints.IsConstr (c, Some diff) [@ocaml.warning "-3"])
- else
- let () = DeclareUctx.declare_universe_context ~poly:false diff in
- (Hints.IsConstr (c, None) [@ocaml.warning "-3"])
+ let evd, c = Constrintern.interp_open_constr env sigma c in
+ let h, diff = Hints.hint_constr env sigma ~poly (evd, c) in
+ let () = DeclareUctx.declare_universe_context ~poly:false diff [@ocaml.warning "-3"] in
+ h
in
let fref r =
let gr = Smartlocate.global_with_alias r in