@@ -850,8 +850,6 @@ struct
850
850
handle_module_expr arg.mod_desc
851
851
| _ -> ()
852
852
853
- include TypedtreeIter. DefaultIteratorArgument
854
-
855
853
let enter_structure_item item =
856
854
match item.str_desc with
857
855
| Tstr_include {incl_mod = expr } -> handle_module_expr expr.mod_desc
@@ -936,49 +934,84 @@ struct
936
934
| Texp_field (inner , lident , _label_description ) ->
937
935
addForField inner.exp_type expression.exp_type lident
938
936
| _ -> ()
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
+ }
939
967
end
940
968
941
969
let extraForStructureItems ~(file : File.t )
942
970
(items : Typedtree.structure_item list ) parts =
943
971
let extra = extraForFile ~file in
944
972
(* TODO look through parts and extend the extent *)
945
- let module Iter = TypedtreeIter. MakeIterator ( F (struct
973
+ let module FM = F (struct
946
974
let extra = extra
947
975
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
+
950
980
(* Log.log("Parts " ++ string_of_int(Array.length(parts))); *)
951
981
parts
952
982
|> Array. iter (fun part ->
953
983
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
958
988
| 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
960
991
| Partial_structure _ | Partial_structure_item _ -> () );
961
992
extra
962
993
963
994
let extraForSignatureItems ~(file : File.t )
964
995
(items : Typedtree.signature_item list ) parts =
965
996
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
968
999
let extra = extra
969
1000
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);
972
1004
(* Log.log("Parts " ++ string_of_int(Array.length(parts))); *)
973
1005
parts
974
1006
|> Array. iter (fun part ->
975
1007
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
980
1012
| 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
982
1015
| Partial_structure _ | Partial_structure_item _ -> () );
983
1016
extra
984
1017
@@ -1152,3 +1185,5 @@ let exportedForTip ~(env : QueryEnv.t) name (tip : Tip.t) =
1152
1185
| Field _ | Constructor _ | Type ->
1153
1186
Exported. find env.exported Exported. Type name
1154
1187
| Module -> Exported. find env.exported Exported. Module name
1188
+
1189
+ module ZZZ = Tast_iterator
0 commit comments