diff options
| author | Pierre-Marie Pédrot | 2014-08-02 16:34:30 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2014-08-02 16:55:16 +0200 |
| commit | 67500967edf584fcddc41c74aea09d48ee80a03c (patch) | |
| tree | a0c46b71ac7536317462836a1336f8d497ab553e /tactics | |
| parent | 94b201b0a7b03978d96b8f8c9d631e4fa4bda4b0 (diff) | |
Better struture for Ltac internalization environments in Constrintern.
Diffstat (limited to 'tactics')
| -rw-r--r-- | tactics/tacintern.ml | 12 | ||||
| -rw-r--r-- | tactics/tacinterp.ml | 20 |
2 files changed, 22 insertions, 10 deletions
diff --git a/tactics/tacintern.ml b/tactics/tacintern.ml index 2a66b32bc5..c2f85d5343 100644 --- a/tactics/tacintern.ml +++ b/tactics/tacintern.ml @@ -245,7 +245,11 @@ let intern_binding_name ist x = let intern_constr_gen allow_patvar isarity {ltacvars=lfun; genv=env} c = let warn = if !strict_check then fun x -> x else Constrintern.for_grammar in let scope = if isarity then Pretyping.IsType else Pretyping.WithoutTypeConstraint in - let ltacvars = (lfun, Id.Set.empty,Id.Map.empty) in + let ltacvars = { + Constrintern.ltac_vars = lfun; + ltac_bound = Id.Set.empty; + ltac_subst = Id.Map.empty; + } in let c' = warn (Constrintern.intern_gen scope ~allow_patvar ~ltacvars env) c in @@ -318,7 +322,11 @@ let intern_flag ist red = let intern_constr_with_occurrences ist (l,c) = (l,intern_constr ist c) let intern_constr_pattern ist ~as_type ~ltacvars pc = - let ltacvars = ltacvars, Id.Set.empty,Id.Map.empty in + let ltacvars = { + Constrintern.ltac_vars = ltacvars; + ltac_bound = Id.Set.empty; + ltac_subst = Id.Map.empty; + } in let metas,pat = Constrintern.intern_constr_pattern ist.genv ~as_type ~ltacvars pc in diff --git a/tactics/tacinterp.ml b/tactics/tacinterp.ml index 20234d1f2c..cca26bf055 100644 --- a/tactics/tacinterp.ml +++ b/tactics/tacinterp.ml @@ -471,10 +471,12 @@ let extract_ltac_uconstr_values ist env = let interp_uconstr ist env = function | (c,None) -> c | (_,Some ce) -> - let ltacvars = extract_ltac_uconstr_values ist env in - let bndvars = Id.Map.domain ist.lfun in - let ltacdata = (Id.Set.empty, bndvars , ltacvars) in - intern_gen WithoutTypeConstraint ~ltacvars:ltacdata env ce + let ltacvars = { + Constrintern.ltac_vars = Id.Set.empty; + ltac_bound = Id.Map.domain ist.lfun; + ltac_subst = extract_ltac_uconstr_values ist env; + } in + intern_gen WithoutTypeConstraint ~ltacvars env ce let interp_gen kind ist allow_patvar flags env sigma (c,ce) = let constrvars = extract_ltac_constr_values ist env in @@ -485,10 +487,12 @@ let interp_gen kind ist allow_patvar flags env sigma (c,ce) = context at globalization time: we retype with the now known intros/lettac/inversion hypothesis names *) | Some c -> - let ltacvars = Id.Map.domain constrvars in - let bndvars = Id.Map.domain ist.lfun in - let ltacdata = (ltacvars, bndvars,Id.Map.empty) in - intern_gen kind ~allow_patvar ~ltacvars:ltacdata env c + let ltacvars = { + ltac_vars = Id.Map.domain constrvars; + ltac_bound = Id.Map.domain ist.lfun; + ltac_subst = Id.Map.empty; + } in + intern_gen kind ~allow_patvar ~ltacvars env c in let trace = push_trace (loc_of_glob_constr c,LtacConstrInterp (c,vars)) ist in |
