aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pretyping/detyping.ml13
1 files changed, 8 insertions, 5 deletions
diff --git a/pretyping/detyping.ml b/pretyping/detyping.ml
index 714b7f6821..b634b04435 100644
--- a/pretyping/detyping.ml
+++ b/pretyping/detyping.ml
@@ -257,11 +257,14 @@ let rec detype avoid env t =
| CoFix (n,recdef) -> detype_fix avoid env (RCoFix n) recdef
and detype_fix avoid env fixkind (names,tys,bodies) =
- let lfi = Array.map (fun id -> next_name_away id avoid) names in
- let def_avoid = Array.to_list lfi@avoid in
- let def_env =
- Array.fold_left (fun env id -> add_name (Name id) env) env lfi in
- RRec(dummy_loc,fixkind,lfi,Array.map (detype avoid env) tys,
+ let def_avoid, def_env, lfi =
+ Array.fold_left
+ (fun (avoid, env, l) na ->
+ let id = next_name_away na avoid in
+ (id::avoid, add_name (Name id) env, id::l))
+ (avoid, env, []) names in
+ RRec(dummy_loc,fixkind,Array.of_list (List.rev lfi),
+ Array.map (detype avoid env) tys,
Array.map (detype def_avoid def_env) bodies)