Skip to content

Commit e8333e3

Browse files
panglesdjonludlam
authored andcommitted
Ident_env: Turn all maps into hashtbl
OCaml Idents are unique, so there is no risk with keeping "out of scope" idents. However, it is practical to keep the full environment at the end of a traverse, for render source code purpose. Signed-off-by: Paul-Elliot <[email protected]>
1 parent 2e2cc45 commit e8333e3

File tree

6 files changed

+139
-128
lines changed

6 files changed

+139
-128
lines changed

src/loader/cmi.ml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -924,17 +924,18 @@ let rec read_module_type env parent (mty : Odoc_model.Compat.module_type) =
924924
| Mty_ident p -> Path {p_path = Env.Path.read_module_type env p; p_expansion=None }
925925
| Mty_signature sg -> Signature (read_signature env parent sg)
926926
| Mty_functor(parameter, res) ->
927-
let f_parameter, env =
927+
let f_parameter =
928928
match parameter with
929-
| Unit -> Odoc_model.Lang.FunctorParameter.Unit, env
929+
| Unit -> Odoc_model.Lang.FunctorParameter.Unit
930930
| Named (id_opt, arg) ->
931-
let id, env = match id_opt with
932-
| None -> Identifier.Mk.parameter(parent, Odoc_model.Names.ModuleName.make_std "_"), env
933-
| Some id -> let env = Env.add_parameter parent id (ModuleName.of_ident id) env in
934-
Ident_env.find_parameter_identifier env id, env
931+
let id = match id_opt with
932+
| None -> Identifier.Mk.parameter(parent, Odoc_model.Names.ModuleName.make_std "_")
933+
| Some id ->
934+
let () = Env.add_parameter parent id (ModuleName.of_ident id) env in
935+
Ident_env.find_parameter_identifier env id
935936
in
936937
let arg = read_module_type env (id :> Identifier.Signature.t) arg in
937-
Odoc_model.Lang.FunctorParameter.Named ({ FunctorParameter. id; expr = arg }), env
938+
Odoc_model.Lang.FunctorParameter.Named ({ FunctorParameter. id; expr = arg })
938939
in
939940
let res = read_module_type env (Identifier.Mk.result parent) res in
940941
Functor( f_parameter, res)
@@ -1082,7 +1083,7 @@ and read_signature_noenv env parent (items : Odoc_model.Compat.signature) =
10821083
loop ([],{s_modules=[]; s_module_types=[]; s_values=[];s_types=[]; s_classes=[]; s_class_types=[]}) items
10831084

10841085
and read_signature env parent (items : Odoc_model.Compat.signature) =
1085-
let env = Env.handle_signature_type_items parent items env in
1086+
let () = Env.handle_signature_type_items parent items env in
10861087
fst @@ read_signature_noenv env parent items
10871088

10881089

src/loader/cmt.ml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -363,19 +363,20 @@ let rec read_module_expr env parent label_parent mexpr =
363363
Signature sg
364364
#if OCAML_VERSION >= (4,10,0)
365365
| Tmod_functor(parameter, res) ->
366-
let f_parameter, env =
366+
let f_parameter =
367367
match parameter with
368-
| Unit -> FunctorParameter.Unit, env
368+
| Unit -> FunctorParameter.Unit
369369
| Named (id_opt, _, arg) ->
370-
let id, env =
370+
let id =
371371
match id_opt with
372-
| None -> Identifier.Mk.parameter (parent, Odoc_model.Names.ModuleName.make_std "_"), env
373-
| Some id -> let env = Env.add_parameter parent id (ModuleName.of_ident id) env in
374-
Env.find_parameter_identifier env id, env
372+
| None -> Identifier.Mk.parameter (parent, Odoc_model.Names.ModuleName.make_std "_")
373+
| Some id ->
374+
let () = Env.add_parameter parent id (ModuleName.of_ident id) env in
375+
Env.find_parameter_identifier env id
375376
in
376377
let arg = Cmti.read_module_type env (id :> Identifier.Signature.t) label_parent arg in
377378

378-
Named { id; expr=arg }, env
379+
Named { id; expr=arg }
379380
in
380381
let res = read_module_expr env (Identifier.Mk.result parent) label_parent res in
381382
Functor (f_parameter, res)
@@ -576,7 +577,7 @@ and read_structure :
576577
'tags. 'tags Odoc_model.Semantics.handle_internal_tags -> _ -> _ -> _ ->
577578
_ * 'tags =
578579
fun internal_tags env parent str ->
579-
let env = Env.add_structure_tree_items parent str env in
580+
let () = Env.add_structure_tree_items parent str env in
580581
let items, (doc, doc_post), tags =
581582
let classify item =
582583
match item.str_desc with

src/loader/cmti.ml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -517,12 +517,12 @@ and read_module_type env parent label_parent mty =
517517
match parameter with
518518
| Unit -> FunctorParameter.Unit, env
519519
| Named (id_opt, _, arg) ->
520-
let id, env =
520+
let id =
521521
match id_opt with
522-
| None -> Identifier.Mk.parameter (parent, ModuleName.make_std "_"), env
522+
| None -> Identifier.Mk.parameter (parent, ModuleName.make_std "_")
523523
| Some id ->
524-
let env = Env.add_parameter parent id (ModuleName.of_ident id) env in
525-
Env.find_parameter_identifier env id, env
524+
let () = Env.add_parameter parent id (ModuleName.of_ident id) env in
525+
Env.find_parameter_identifier env id
526526
in
527527
let arg = read_module_type env (id :> Identifier.Signature.t) label_parent arg in
528528
Named { id; expr = arg; }, env
@@ -772,7 +772,7 @@ and read_signature :
772772
'tags. 'tags Odoc_model.Semantics.handle_internal_tags -> _ -> _ -> _ ->
773773
_ * 'tags =
774774
fun internal_tags env parent sg ->
775-
let env = Env.add_signature_tree_items parent sg env in
775+
let () = Env.add_signature_tree_items parent sg env in
776776
let items, (doc, doc_post), tags =
777777
let classify item =
778778
match item.sig_desc with

0 commit comments

Comments
 (0)