소스 검색

write tpp paths instead of names

Simon Krajewski 1 년 전
부모
커밋
b743ed6272
2개의 변경된 파일8개의 추가작업 그리고 10개의 파일을 삭제
  1. 7 9
      src/compiler/hxb/hxbReader.ml
  2. 1 1
      src/compiler/hxb/hxbWriter.ml

+ 7 - 9
src/compiler/hxb/hxbReader.ml

@@ -745,13 +745,12 @@ class hxb_reader
 
 	(* Fields *)
 
-	method read_type_parameters (path : path) (host : type_param_host) (f : typed_type_param array -> unit) =
+	method read_type_parameters (host : type_param_host) (f : typed_type_param array -> unit) =
 		let l = self#read_uleb128 in
 		let a = Array.init l (fun _ ->
-			let name = self#read_string in
+			let path = self#read_path in
 			let pos = self#read_pos in
-			let cpath = (fst path @ [snd path],name) in
-			let c = mk_class current_module cpath pos pos in
+			let c = mk_class current_module path pos pos in
 			mk_type_param c host None None
 		) in
 		f a;
@@ -1120,14 +1119,13 @@ class hxb_reader
 
 	method read_class_field_data (nested : bool) (cf : tclass_field) : unit =
 		current_field <- cf;
-		let name = cf.cf_name in
 
 		let params = ref [] in
-		self#read_type_parameters ([],name) (if nested then TPHAnonField else TPHMethod) (fun a ->
+		self#read_type_parameters (if nested then TPHAnonField else TPHMethod) (fun a ->
 			params := Array.to_list a;
 			field_type_parameters <- if nested then Array.append field_type_parameters a else a
 		);
-		self#read_type_parameters ([],name) TPHLocal (fun a ->
+		self#read_type_parameters TPHLocal (fun a ->
 			local_type_parameters <- if nested then Array.append local_type_parameters a else a
 		);
 		let t = self#read_type_instance in
@@ -1213,7 +1211,7 @@ class hxb_reader
 			let name = self#read_string in
 			let ef = PMap.find name e.e_constrs in
 			let params = ref [] in
-			self#read_type_parameters ([],name) TPHEnumConstructor (fun a ->
+			self#read_type_parameters TPHEnumConstructor (fun a ->
 				params := Array.to_list a;
 				field_type_parameters <- a;
 			);
@@ -1231,7 +1229,7 @@ class hxb_reader
 		infos.mt_private <- self#read_bool;
 		infos.mt_doc <- self#read_option (fun () -> self#read_documentation);
 		infos.mt_meta <- self#read_metadata;
-		self#read_type_parameters infos.mt_path TPHType (fun a -> type_type_parameters <- a);
+		self#read_type_parameters TPHType (fun a -> type_type_parameters <- a);
 		infos.mt_params <- Array.to_list type_type_parameters;
 		infos.mt_using <- self#read_list (fun () ->
 			let c = self#read_class_ref in

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

@@ -1193,7 +1193,7 @@ class ['a] hxb_writer
 		) params
 
 	method write_type_parameter_forward ttp =
-		chunk#write_string ttp.ttp_name;
+		self#write_path ttp.ttp_class.cl_path;
 		self#write_pos ttp.ttp_class.cl_name_pos
 
 	method write_type_parameter_data ttp = match follow_lazy ttp.ttp_type with