diff options
| author | Matej Kosik | 2016-08-25 14:31:30 +0200 |
|---|---|---|
| committer | Matej Kosik | 2016-08-25 14:31:30 +0200 |
| commit | a2b0c48d8b531ae1b193eed4dec1afeaa67fbece (patch) | |
| tree | af83d8a0fb79c51e13c44bc60be9cde810f87152 /pretyping/pretyping.ml | |
| parent | 1297523bffdc3a9fe3e447acc6837be835e86d06 (diff) | |
| parent | 7244637f251272c0d0155d49fc7c1af255b7cef8 (diff) | |
Merge remote-tracking branch 'v8.6' into trunk
Diffstat (limited to 'pretyping/pretyping.ml')
| -rw-r--r-- | pretyping/pretyping.ml | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml index a172d25607..0f85dc629c 100644 --- a/pretyping/pretyping.ml +++ b/pretyping/pretyping.ml @@ -404,9 +404,10 @@ let ltac_interp_name_env k0 lvar env = (* tail is the part of the env enriched by pretyping *) let n = Context.Rel.length (rel_context env) - k0 in let ctxt,_ = List.chop n (rel_context env) in - let env = pop_rel_context n env in - let ctxt = List.map (Context.Rel.Declaration.map_name (ltac_interp_name lvar)) ctxt in - push_rel_context ctxt env + let open Context.Rel.Declaration in + let ctxt' = List.smartmap (map_name (ltac_interp_name lvar)) ctxt in + if List.equal (fun d1 d2 -> Name.equal (get_name d1) (get_name d2)) ctxt ctxt' then env + else push_rel_context ctxt' (pop_rel_context n env) let invert_ltac_bound_name lvar env id0 id = let id' = Id.Map.find id lvar.ltac_idents in @@ -804,8 +805,8 @@ let rec pretype k0 resolve_tc (tycon : type_constraint) (env : ExtraEnv.t) evdre let j = pretype_type empty_valcon env evdref lvar c2 in { j with utj_val = lift 1 j.utj_val } | Name _ -> - let var = (name,j.utj_val) in - let env' = ExtraEnv.make_env (push_rel_assum var env.ExtraEnv.env) in + let var = LocalAssum (name, j.utj_val) in + let env' = push_rel var env in pretype_type empty_valcon env' evdref lvar c2 in let name = ltac_interp_name lvar name in |
