diff options
| author | Pierre-Marie Pédrot | 2014-09-03 18:13:07 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2014-09-03 18:23:54 +0200 |
| commit | 7525890df67fe711e2d3d63846ddb1e988d0812b (patch) | |
| tree | accc5678b182a6a65eb4ebd291f93da7f5779c27 /tactics | |
| parent | 4afe5e4385fc303010a4afd6040565ccd54291a9 (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.ml | 17 |
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 |
