@@ -84,6 +84,11 @@ type node =
8484 | Module_binding_name of module_binding
8585 | Module_declaration_name of module_declaration
8686 | Module_type_declaration_name of module_type_declaration
87+ | Class_declaration_name of class_declaration
88+ | Class_type_declaration_name of class_type_declaration
89+ | Class_description_name of class_description
90+ | Class_field_name of class_field
91+ | Exp_new_class_name of Longident .t Location .loc * Types .class_declaration
8792
8893let node_update_env env0 = function
8994 | Pattern { pat_env = env }
@@ -104,6 +109,11 @@ let node_update_env env0 = function
104109 | Class_signature _
105110 | Class_field _
106111 | Class_field_kind _
112+ | Class_declaration_name _
113+ | Class_type_declaration_name _
114+ | Class_description_name _
115+ | Class_field_name _
116+ | Exp_new_class_name _
107117 | Type_extension _
108118 | Extension_constructor _
109119 | Package_type _
@@ -159,6 +169,12 @@ let node_real_loc loc0 = function
159169 | Class_declaration { ci_loc = loc }
160170 | Class_description { ci_loc = loc }
161171 | Class_type_declaration { ci_loc = loc }
172+ | Class_declaration_name { ci_id_name = { loc } }
173+ | Class_type_declaration_name { ci_id_name = { loc } }
174+ | Class_description_name { ci_id_name = { loc } }
175+ | Class_field_name
176+ { cf_desc = Tcf_val ({ loc }, _, _, _, _) | Tcf_method ({ loc }, _, _) }
177+ | Exp_new_class_name ({ loc }, _)
162178 | Extension_constructor { ext_loc = loc }
163179 | Include_description { incl_loc = loc }
164180 | Include_declaration { incl_loc = loc }
@@ -180,6 +196,7 @@ let node_real_loc loc0 = function
180196 | Type_kind _
181197 | Class_signature _
182198 | Package_type _
199+ | Class_field_name _
183200 | Dummy -> loc0
184201
185202let node_attributes = function
@@ -351,7 +368,8 @@ let of_method_call obj meth loc env (f : _ f0) acc =
351368let rec of_expression_desc loc = function
352369 | Texp_ident _ | Texp_constant _ | Texp_instvar _
353370 | Texp_variant (_, None )
354- | Texp_new _ | Texp_typed_hole -> id_fold
371+ | Texp_typed_hole -> id_fold
372+ | Texp_new (_ , lid , decl ) -> app (Exp_new_class_name (lid, decl))
355373 | Texp_let (_ , vbs , e ) -> of_expression e ** list_fold of_value_binding vbs
356374 | Texp_function (params , body ) ->
357375 list_fold of_function_param params ** of_function_body body
@@ -586,7 +604,8 @@ let of_node = function
586604 | Class_expr { cl_desc } -> of_class_expr_desc cl_desc
587605 | Class_structure { cstr_self; cstr_fields } ->
588606 of_pattern cstr_self ** list_fold (fun f -> app (Class_field f)) cstr_fields
589- | Class_field { cf_desc } -> of_class_field_desc cf_desc
607+ | Class_field ({ cf_desc } as cf ) ->
608+ of_class_field_desc cf_desc ** app (Class_field_name cf)
590609 | Class_field_kind (Tcfk_virtual ct ) -> of_core_type ct
591610 | Class_field_kind (Tcfk_concrete (_ , e )) -> of_expression e
592611 | Module_expr { mod_desc } -> of_module_expr_desc mod_desc
@@ -656,17 +675,28 @@ let of_node = function
656675 of_core_type csig_self
657676 ** list_fold (fun x -> app (Class_type_field x)) csig_fields
658677 | Class_type_field { ctf_desc } -> of_class_type_field_desc ctf_desc
659- | Class_declaration { ci_params; ci_expr } ->
660- app (Class_expr ci_expr) ** list_fold of_typ_param ci_params
661- | Class_description { ci_params; ci_expr } ->
662- app (Class_type ci_expr) ** list_fold of_typ_param ci_params
663- | Class_type_declaration { ci_params; ci_expr } ->
664- app (Class_type ci_expr) ** list_fold of_typ_param ci_params
678+ | Class_declaration ({ ci_params; ci_expr } as cd ) ->
679+ app (Class_expr ci_expr)
680+ ** list_fold of_typ_param ci_params
681+ ** app (Class_declaration_name cd)
682+ | Class_description ({ ci_params; ci_expr } as cd ) ->
683+ app (Class_type ci_expr)
684+ ** list_fold of_typ_param ci_params
685+ ** app (Class_description_name cd)
686+ | Class_type_declaration ({ ci_params; ci_expr } as ctd ) ->
687+ app (Class_type ci_expr)
688+ ** list_fold of_typ_param ci_params
689+ ** app (Class_type_declaration_name ctd)
665690 | Method_call _ -> id_fold
666691 | Record_field _ -> id_fold
667692 | Module_binding_name _ -> id_fold
668693 | Module_declaration_name _ -> id_fold
669694 | Module_type_declaration_name _ -> id_fold
695+ | Class_declaration_name _ -> id_fold
696+ | Class_type_declaration_name _ -> id_fold
697+ | Class_description_name _ -> id_fold
698+ | Class_field_name _ -> id_fold
699+ | Exp_new_class_name _ -> id_fold
670700 | Open_description _ -> id_fold
671701 | Open_declaration od -> app (Module_expr od.open_expr)
672702 | Include_declaration i -> of_module_expr i.incl_mod
@@ -723,6 +753,11 @@ let string_of_node = function
723753 | Module_binding_name _ -> " module_binding_name"
724754 | Module_declaration_name _ -> " module_declaration_name"
725755 | Module_type_declaration_name _ -> " module_type_declaration_name"
756+ | Class_declaration_name _ -> " class_declaration_name"
757+ | Class_type_declaration_name _ -> " class_type_declaration_name"
758+ | Class_description_name _ -> " class_description_name"
759+ | Class_field_name _ -> " class_field_name"
760+ | Exp_new_class_name _ -> " exp_new_class_name"
726761 | Open_description _ -> " open_description"
727762 | Open_declaration _ -> " open_declaration"
728763 | Include_description _ -> " include_description"
0 commit comments