@@ -19,11 +19,18 @@ type type_ = {
1919
2020type class_modification = Unsupported
2121
22- and class_ = {
22+ type class_ = {
2323 cname : string ;
2424 cdiff : (class_declaration , class_modification ) t ;
2525}
2626
27+ type class_type_modification = Unsupported
28+
29+ type cltype = {
30+ ctname : string ;
31+ ctdiff : (class_type_declaration , class_type_modification ) t ;
32+ }
33+
2734type module_ = {
2835 mname : string ;
2936 mdiff : (module_declaration , signature_modification ) t ;
@@ -42,6 +49,7 @@ and sig_item =
4249 | Type of type_
4350 | Modtype of modtype
4451 | Class of class_
52+ | Classtype of cltype
4553
4654let extract_items items =
4755 List. fold_left
@@ -60,6 +68,9 @@ let extract_items items =
6068 (type_decl, id) tbl
6169 | Sig_class (id , cls_decl , _ , Exported) ->
6270 Sig_item_map. add ~name: (Ident. name id) Sig_item_map. Class cls_decl tbl
71+ | Sig_class_type (id , class_type_decl , _ , Exported) ->
72+ Sig_item_map. add ~name: (Ident. name id) Sig_item_map. Classtype
73+ class_type_decl tbl
6374 | _ -> tbl)
6475 Sig_item_map. empty items
6576
@@ -128,6 +139,16 @@ let class_item ~name ~(reference : class_declaration option)
128139 | Some ref_cls , None -> Some (Class { cname = name; cdiff = Removed ref_cls })
129140 | Some _ , Some _ -> None
130141
142+ let class_type_item ~name ~(reference : class_type_declaration option )
143+ ~(current : class_type_declaration option ) =
144+ match (reference, current) with
145+ | None , None -> None
146+ | None , Some curr_class_type ->
147+ Some (Classtype { ctname = name; ctdiff = Added curr_class_type })
148+ | Some ref_class_type , None ->
149+ Some (Classtype { ctname = name; ctdiff = Removed ref_class_type })
150+ | Some _ , Some _ -> None
151+
131152let rec items ~reference ~current =
132153 let env = Typing_env. for_diff ~reference ~current in
133154 let ref_items = extract_items reference in
@@ -140,6 +161,7 @@ let rec items ~reference ~current =
140161 | Modtype -> module_type_item ~typing_env: env ~name ~reference ~current
141162 | Type -> type_item ~typing_env: env ~name ~reference ~current
142163 | Class -> class_item ~name ~reference ~current
164+ | Classtype -> class_type_item ~name ~reference ~current
143165 in
144166 Sig_item_map. diff ~diff_item: { diff_item } ref_items curr_items
145167
0 commit comments