From f19d341c22cd43555953d30d22f40d2711d30100 Mon Sep 17 00:00:00 2001 From: Rudy Ges Date: Tue, 25 Jul 2023 14:51:49 +0200 Subject: [PATCH] [hxb] write/read overloads too --- src/compiler/hxb/hxbReader.ml | 12 ++++++++---- src/compiler/hxb/hxbWriter.ml | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/compiler/hxb/hxbReader.ml b/src/compiler/hxb/hxbReader.ml index b778eefa7ab..45ad6cbded0 100644 --- a/src/compiler/hxb/hxbReader.ml +++ b/src/compiler/hxb/hxbReader.ml @@ -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 @@ -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; @@ -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) = diff --git a/src/compiler/hxb/hxbWriter.ml b/src/compiler/hxb/hxbWriter.ml index d105d1ea202..56a714d7ac6 100644 --- a/src/compiler/hxb/hxbWriter.ml +++ b/src/compiler/hxb/hxbWriter.ml @@ -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 @@ -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;