aboutsummaryrefslogtreecommitdiff
path: root/tactics
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2014-09-03 18:13:07 +0200
committerPierre-Marie Pédrot2014-09-03 18:23:54 +0200
commit7525890df67fe711e2d3d63846ddb1e988d0812b (patch)
treeaccc5678b182a6a65eb4ebd291f93da7f5779c27 /tactics
parent4afe5e4385fc303010a4afd6040565ccd54291a9 (diff)
Fixing bug #2818.
Local Ltac definitions do not register their name in the nametab anymore, thus elegantly solving the bug. The tactic body remains accessible from the tactic engine, but the name is rendered meaningless to the userside.
Diffstat (limited to 'tactics')
-rw-r--r--tactics/tacenv.ml17
1 files changed, 12 insertions, 5 deletions
diff --git a/tactics/tacenv.ml b/tactics/tacenv.ml
index 4c8175b8dd..8557ee6a80 100644
--- a/tactics/tacenv.ml
+++ b/tactics/tacenv.ml
@@ -85,14 +85,22 @@ let add (kn,td) = mactab := KNmap.add kn td !mactab
let replace (kn,td) = mactab := KNmap.add kn td !mactab
let load_md i ((sp, kn), (local, id ,t)) = match id with
-| None -> Nametab.push_tactic (Until i) sp kn; add (kn, t)
+| None ->
+ let () = if not local then Nametab.push_tactic (Until i) sp kn in
+ add (kn, t)
| Some kn -> add (kn, t)
let open_md i ((sp, kn), (local, id ,t)) = match id with
-| None -> Nametab.push_tactic (Exactly i) sp kn; add (kn, t)
+| None ->
+ let () = if not local then Nametab.push_tactic (Exactly i) sp kn in
+ add (kn, t)
| Some kn -> add (kn, t)
-let cache_md x = load_md 1 x
+let cache_md ((sp, kn), (local, id ,t)) = match id with
+| None ->
+ let () = Nametab.push_tactic (Until 1) sp kn in
+ add (kn, t)
+| Some kn -> add (kn, t)
let subst_kind subst id = match id with
| None -> None
@@ -101,8 +109,7 @@ let subst_kind subst id = match id with
let subst_md (subst, (local, id, t)) =
(local, subst_kind subst id, Tacsubst.subst_tactic subst t)
-let classify_md (local, _, _ as o) =
- if local then Dispose else Substitute o
+let classify_md (local, _, _ as o) = Substitute o
let inMD : bool * Nametab.ltac_constant option * glob_tactic_expr -> obj =
declare_object {(default_object "TAC-DEFINITION") with