diff options
author | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2015-12-29 18:31:17 +0100 |
---|---|---|
committer | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2015-12-30 02:20:15 +0100 |
commit | 203b0eaac832af3b62e484c1aef89a02ffe8e29b (patch) | |
tree | e7bd721dd8a0e0ad26567158ff5bfa3b68620c7c /toplevel | |
parent | a4cc4ea007b074009bea485e75f7efef3d4d25f3 (diff) |
External tactics and notations now accept any tactic argument.
This commit has deep consequences in term of tactic evaluation,
as it allows to pass any tac_arg to ML and alias tactics rather than
mere generic arguments. This makes the evaluation much more uniform,
and in particular it removes the special evaluation function for notations.
This last point may break some notations out there unluckily.
I had to treat in an ad-hoc way the tactic(...) entry of tactic notations
because it is actually not interpreted as a generic argument but rather
as a proper tactic expression instead.
There is for now no syntax to pass any tactic argument to a given ML or
notation tactic, but this should come soon.
Also fixes bug #3849 en passant.
Diffstat (limited to 'toplevel')
-rw-r--r-- | toplevel/metasyntax.ml | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/toplevel/metasyntax.ml b/toplevel/metasyntax.ml index 7714cc810..0f96c2b4a 100644 --- a/toplevel/metasyntax.ml +++ b/toplevel/metasyntax.ml @@ -171,6 +171,7 @@ let extend_atomic_tactic name entries = | None -> () | Some args -> let open Tacexpr in + let args = List.map (fun a -> TacGeneric a) args in let entry = { mltac_name = name; mltac_index = i } in let body = TacML (Loc.ghost, entry, args) in Tacenv.register_ltac false false (Names.Id.of_string id) body |