Skip to content

Commit

Permalink
[hxb] write/read overloads too
Browse files Browse the repository at this point in the history
  • Loading branch information
kLabz committed Jul 25, 2023
1 parent 56ccfba commit f19d341
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
12 changes: 8 additions & 4 deletions src/compiler/hxb/hxbReader.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1077,8 +1077,8 @@ class hxb_reader
let name = self#read_string in
let pos = self#read_pos in
let name_pos = self#read_pos in
(* TODO overloads *)
{ null_field with cf_name = name; cf_pos = pos; cf_name_pos = name_pos }
let overloads = self#read_list (fun () -> self#read_class_field_forward) in
{ null_field with cf_name = name; cf_pos = pos; cf_name_pos = name_pos; cf_overloads = overloads }

method read_class_field_data (nested : bool) (cf : tclass_field) : unit =
let name = cf.cf_name in
Expand All @@ -1100,7 +1100,12 @@ class hxb_reader

let expr = self#read_option (fun () -> self#read_texpr) in
let expr_unoptimized = self#read_option (fun () -> self#read_texpr) in
let overloads = self#read_list (fun () -> self#read_class_field false) in

let l = self#read_uleb128 in
for i = 0 to l - 1 do
let f = List.nth cf.cf_overloads i in
self#read_class_field_data true f
done;

cf.cf_type <- t;
cf.cf_doc <- doc;
Expand All @@ -1109,7 +1114,6 @@ class hxb_reader
cf.cf_expr <- expr;
cf.cf_expr_unoptimized <- expr_unoptimized;
cf.cf_params <- params;
cf.cf_overloads <- overloads;
cf.cf_flags <- flags;

method read_class_field (nested : bool) =
Expand Down
3 changes: 2 additions & 1 deletion src/compiler/hxb/hxbWriter.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1175,6 +1175,7 @@ class ['a] hxb_writer
chunk#write_string cf.cf_name;
self#write_pos cf.cf_pos;
self#write_pos cf.cf_name_pos;
chunk#write_list cf.cf_overloads (self#write_class_field_forward);

method write_class_field_data cf =
let restore = self#start_temporary_chunk in
Expand All @@ -1194,7 +1195,7 @@ class ['a] hxb_writer
raise e
end);
chunk#write_option cf.cf_expr_unoptimized self#write_texpr;
chunk#write_list cf.cf_overloads (self#write_class_field);
chunk#write_list cf.cf_overloads (fun f -> self#write_class_field_data f);
restore (fun chunk new_chunk ->
chunk#write_list cf.cf_params self#write_type_parameter_forward;
chunk#write_list cf.cf_params self#write_type_parameter_data;
Expand Down

0 comments on commit f19d341

Please sign in to comment.