瀏覽代碼

[TYPF] skip module name, only write pack when different from current module (private types)

Rudy Ges 1 年之前
父節點
當前提交
1c1953c227
共有 2 個文件被更改,包括 10 次插入3 次删除
  1. 5 2
      src/compiler/hxb/hxbReader.ml
  2. 5 1
      src/compiler/hxb/hxbWriter.ml

+ 5 - 2
src/compiler/hxb/hxbReader.ml

@@ -1662,8 +1662,11 @@ class hxb_reader
 	method read_typf =
 		self#read_list (fun () ->
 			let kind = IO.read_byte ch in
-			(* let path = self#read_path in *)
-			let (pack,_,tname) = self#read_full_path in
+			let pack = match IO.read_byte ch with
+			| 0 -> fst current_module.m_path
+			| _ -> self#read_list (fun () -> self#read_string)
+			in
+			let tname = self#read_string in
 			let path = (pack, tname) in
 			let pos = self#read_pos in
 			let name_pos = self#read_pos in

+ 5 - 1
src/compiler/hxb/hxbWriter.ml

@@ -1930,7 +1930,11 @@ class hxb_writer
 
 		let infos = t_infos mt in
 		IOChunk.write_u8 chunk.io i;
-		self#write_full_path (fst infos.mt_path) (snd infos.mt_path) !name;
+		if (fst infos.mt_path) <> (fst current_module.m_path) then begin
+			IOChunk.write_u8 chunk.io 1;
+			Chunk.write_list chunk (fst infos.mt_path) (Chunk.write_string chunk);
+		end else IOChunk.write_u8 chunk.io 0;
+		Chunk.write_string chunk !name;
 		self#write_pos infos.mt_pos;
 		self#write_pos infos.mt_name_pos;
 		let params = new pool in