@@ -34,14 +34,6 @@ let command ~path =
34
34
| Pexp_constant _ -> Constant
35
35
| _ -> Variable
36
36
in
37
- let value_binding (iterator : Ast_iterator.iterator )
38
- (vb : Parsetree.value_binding ) =
39
- (match vb.pvb_pat.ppat_desc with
40
- | Ppat_var {txt} | Ppat_constraint ({ppat_desc = Ppat_var {txt} } , _ ) ->
41
- symbols := (txt, vb.pvb_loc, exprKind vb.pvb_expr) :: ! symbols
42
- | _ -> () );
43
- Ast_iterator. default_iterator.value_binding iterator vb
44
- in
45
37
let processTypeKind (tk : Parsetree.type_kind ) =
46
38
match tk with
47
39
| Ptype_variant constrDecls ->
@@ -67,6 +59,23 @@ let command ~path =
67
59
let processModuleDeclaration (md : Parsetree.module_declaration ) =
68
60
symbols := (md.pmd_name.txt, md.pmd_loc, Module ) :: ! symbols
69
61
in
62
+ let value_binding (iterator : Ast_iterator.iterator )
63
+ (vb : Parsetree.value_binding ) =
64
+ (match vb.pvb_pat.ppat_desc with
65
+ | Ppat_var {txt} | Ppat_constraint ({ppat_desc = Ppat_var {txt} } , _ ) ->
66
+ symbols := (txt, vb.pvb_loc, exprKind vb.pvb_expr) :: ! symbols
67
+ | _ -> () );
68
+ Ast_iterator. default_iterator.value_binding iterator vb
69
+ in
70
+ let expr (iterator : Ast_iterator.iterator ) (e : Parsetree.expression ) =
71
+ (match e.pexp_desc with
72
+ | Pexp_letmodule ({txt} , modExpr , _ ) ->
73
+ symbols :=
74
+ (txt, {e.pexp_loc with loc_end = modExpr.pmod_loc.loc_end}, Module )
75
+ :: ! symbols
76
+ | _ -> () );
77
+ Ast_iterator. default_iterator.expr iterator e
78
+ in
70
79
let structure_item (iterator : Ast_iterator.iterator )
71
80
(item : Parsetree.structure_item ) =
72
81
(match item.pstr_desc with
@@ -99,9 +108,10 @@ let command ~path =
99
108
let iterator =
100
109
{
101
110
Ast_iterator. default_iterator with
102
- structure_item;
103
- signature_item;
111
+ expr;
104
112
module_expr;
113
+ signature_item;
114
+ structure_item;
105
115
value_binding;
106
116
}
107
117
in
0 commit comments