@@ -42,35 +42,42 @@ let collect_module_symbols with_locals (pack,decls) =
42
42
expr_opt parent f.f_expr
43
43
in
44
44
let is_deprecated meta = Meta. has Meta. Deprecated meta in
45
- let field parent parent_kind cff =
46
- let field_parent = parent ^ " ." ^ (fst cff. cff_name) in
47
- let add_field kind = add (fst cff. cff_name) kind cff. cff_pos parent (is_deprecated cff. cff_meta) in
48
- match cff. cff_kind with
45
+ let field' parent parent_kind cff_name cff_kind cff_access cff_pos cff_meta =
46
+ let field_parent = parent ^ " ." ^ (fst cff_name) in
47
+ let add_field kind = add (fst cff_name) kind cff_pos parent (is_deprecated cff_meta) in
48
+ match cff_kind with
49
49
| FVar (_ ,eo ) ->
50
50
add_field (
51
- if parent_kind = EnumAbstract && not (List. mem_assoc AStatic cff. cff_access) then EnumMember
52
- else if (List. mem_assoc AInline cff. cff_access) then Constant
51
+ if parent_kind = EnumAbstract && not (List. mem_assoc AStatic cff_access) then EnumMember
52
+ else if (List. mem_assoc AInline cff_access) then Constant
53
53
else Field
54
54
);
55
55
if with_locals then expr_opt field_parent eo
56
56
| FFun f ->
57
57
add_field (
58
- if fst cff. cff_name = " new" then Constructor
59
- else if ((parent_kind = EnumAbstract or parent_kind = Abstract ) && Meta. has_one_of [Meta. Op ; Meta. ArrayAccess ; Meta. Resolve ] cff. cff_meta) then Operator
58
+ if fst cff_name = " new" then Constructor
59
+ else if ((parent_kind = EnumAbstract or parent_kind = Abstract ) && Meta. has_one_of [Meta. Op ; Meta. ArrayAccess ; Meta. Resolve ] cff_meta) then Operator
60
60
else Method
61
61
);
62
62
if with_locals then func field_parent f
63
63
| FProp (_ ,_ ,_ ,eo ) ->
64
64
add_field Property ;
65
65
if with_locals then expr_opt field_parent eo
66
66
in
67
+ let field parent parent_kind cff =
68
+ field' parent parent_kind cff.cff_name cff.cff_kind cff.cff_access cff.cff_pos cff.cff_meta
69
+ in
67
70
List. iter (fun (td ,p ) ->
68
- let add_type d kind =
69
- let string_of_path l = String. concat " ." l in
71
+ let get_decl_path d =
70
72
let module_name = Path. module_name_of_file p.pfile in
71
73
let type_name = fst d.d_name in
72
74
let is_primary_type = type_name = module_name in
73
75
let type_path = if is_primary_type then pack else pack @ [module_name] in
76
+ type_path, type_name
77
+ in
78
+ let string_of_path l = String. concat " ." l in
79
+ let add_type d kind =
80
+ let type_path, type_name = get_decl_path d in
74
81
add type_name kind p (string_of_path type_path) (is_deprecated d.d_meta);
75
82
string_of_path (type_path @ [type_name])
76
83
in
@@ -98,6 +105,10 @@ let collect_module_symbols with_locals (pack,decls) =
98
105
let kind = if Meta. has Meta. Enum d.d_meta then EnumAbstract else Abstract in
99
106
let parent = add_type d kind in
100
107
List. iter (field parent kind) d.d_data
108
+ | EStatic d ->
109
+ let path, name = get_decl_path d in
110
+ let dotpath = string_of_path (path @ [name]) in
111
+ field' dotpath Class d.d_name d.d_data d.d_flags p d.d_meta
101
112
) decls;
102
113
l
103
114
0 commit comments