Skip to content

Commit d3c1cd4

Browse files
committed
Remove typedtreeIter and use tast_iterator instead.
1 parent 764eadc commit d3c1cd4

File tree

5 files changed

+519
-707
lines changed

5 files changed

+519
-707
lines changed

analysis/src/ProcessCmt.ml

Lines changed: 54 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -850,8 +850,6 @@ struct
850850
handle_module_expr arg.mod_desc
851851
| _ -> ()
852852

853-
include TypedtreeIter.DefaultIteratorArgument
854-
855853
let enter_structure_item item =
856854
match item.str_desc with
857855
| Tstr_include {incl_mod = expr} -> handle_module_expr expr.mod_desc
@@ -936,49 +934,84 @@ struct
936934
| Texp_field (inner, lident, _label_description) ->
937935
addForField inner.exp_type expression.exp_type lident
938936
| _ -> ()
937+
938+
let structure_item (iter : Tast_iterator.iterator) item =
939+
enter_structure_item item;
940+
Tast_iterator.default_iterator.structure_item iter item
941+
942+
let signature_item (iter : Tast_iterator.iterator) item =
943+
enter_signature_item item;
944+
Tast_iterator.default_iterator.signature_item iter item
945+
946+
let typ (iter : Tast_iterator.iterator) item =
947+
enter_core_type item;
948+
Tast_iterator.default_iterator.typ iter item
949+
950+
let pat (iter : Tast_iterator.iterator) item =
951+
enter_pattern item;
952+
Tast_iterator.default_iterator.pat iter item
953+
954+
let expr (iter : Tast_iterator.iterator) item =
955+
enter_expression item;
956+
Tast_iterator.default_iterator.expr iter item
957+
958+
let iterator =
959+
{
960+
Tast_iterator.default_iterator with
961+
expr;
962+
pat;
963+
signature_item;
964+
structure_item;
965+
typ;
966+
}
939967
end
940968

941969
let extraForStructureItems ~(file : File.t)
942970
(items : Typedtree.structure_item list) parts =
943971
let extra = extraForFile ~file in
944972
(* TODO look through parts and extend the extent *)
945-
let module Iter = TypedtreeIter.MakeIterator (F (struct
973+
let module FM = F (struct
946974
let extra = extra
947975
let file = file
948-
end)) in
949-
List.iter Iter.iter_structure_item items;
976+
end) in
977+
let iterator = FM.iterator in
978+
items |> List.iter (iterator.structure_item iterator);
979+
950980
(* Log.log("Parts " ++ string_of_int(Array.length(parts))); *)
951981
parts
952982
|> Array.iter (fun part ->
953983
match part with
954-
| Cmt_format.Partial_signature str -> Iter.iter_signature str
955-
| Partial_signature_item str -> Iter.iter_signature_item str
956-
| Partial_expression expression -> Iter.iter_expression expression
957-
| Partial_pattern pattern -> Iter.iter_pattern pattern
984+
| Cmt_format.Partial_signature str -> iterator.signature iterator str
985+
| Partial_signature_item str -> iterator.signature_item iterator str
986+
| Partial_expression expression -> iterator.expr iterator expression
987+
| Partial_pattern pattern -> iterator.pat iterator pattern
958988
| Partial_class_expr () -> ()
959-
| Partial_module_type module_type -> Iter.iter_module_type module_type
989+
| Partial_module_type module_type ->
990+
iterator.module_type iterator module_type
960991
| Partial_structure _ | Partial_structure_item _ -> ());
961992
extra
962993

963994
let extraForSignatureItems ~(file : File.t)
964995
(items : Typedtree.signature_item list) parts =
965996
let extra = extraForFile ~file in
966-
(* TODO look through parts and extend the extent *)
967-
let module Iter = TypedtreeIter.MakeIterator (F (struct
997+
998+
let module FM = F (struct
968999
let extra = extra
9691000
let file = file
970-
end)) in
971-
List.iter Iter.iter_signature_item items;
1001+
end) in
1002+
let iterator = FM.iterator in
1003+
items |> List.iter (iterator.signature_item iterator);
9721004
(* Log.log("Parts " ++ string_of_int(Array.length(parts))); *)
9731005
parts
9741006
|> Array.iter (fun part ->
9751007
match part with
976-
| Cmt_format.Partial_signature str -> Iter.iter_signature str
977-
| Partial_signature_item str -> Iter.iter_signature_item str
978-
| Partial_expression expression -> Iter.iter_expression expression
979-
| Partial_pattern pattern -> Iter.iter_pattern pattern
1008+
| Cmt_format.Partial_signature str -> iterator.signature iterator str
1009+
| Partial_signature_item str -> iterator.signature_item iterator str
1010+
| Partial_expression expression -> iterator.expr iterator expression
1011+
| Partial_pattern pattern -> iterator.pat iterator pattern
9801012
| Partial_class_expr () -> ()
981-
| Partial_module_type module_type -> Iter.iter_module_type module_type
1013+
| Partial_module_type module_type ->
1014+
iterator.module_type iterator module_type
9821015
| Partial_structure _ | Partial_structure_item _ -> ());
9831016
extra
9841017

@@ -1152,3 +1185,5 @@ let exportedForTip ~(env : QueryEnv.t) name (tip : Tip.t) =
11521185
| Field _ | Constructor _ | Type ->
11531186
Exported.find env.exported Exported.Type name
11541187
| Module -> Exported.find env.exported Exported.Module name
1188+
1189+
module ZZZ = Tast_iterator

0 commit comments

Comments
 (0)