Pārlūkot izejas kodu

be less awkward around ttps

They're your friend!
Simon Krajewski 1 gadu atpakaļ
vecāks
revīzija
a7118945c8
1 mainītis faili ar 9 papildinājumiem un 13 dzēšanām
  1. 9 13
      src/compiler/hxb/hxbReader.ml

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

@@ -639,16 +639,16 @@ class hxb_reader
 
 	(* Type instances *)
 
-	method read_type_parameter_ref = function
+	method resolve_ttp_ref = function
 		| 5 ->
 			let i = self#read_uleb128 in
-			(field_type_parameters.(i)).ttp_type
+			(field_type_parameters.(i))
 		| 6 ->
 			let i = self#read_uleb128 in
-			(type_type_parameters.(i)).ttp_type
+			(type_type_parameters.(i))
 		| 7 ->
 			let k = self#read_uleb128 in
-			local_type_parameters.(k).ttp_type
+			local_type_parameters.(k)
 		| _ ->
 			die "" __LOC__
 
@@ -666,7 +666,7 @@ class hxb_reader
 		(* 	let tmono = !monomorph_create_ref () in (1* TODO identity *1) *)
 		(* 	tmono.tm_type <- Some t; *)
 		(* 	TMono tmono; *)
-		| 5 | 6 | 7 -> self#read_type_parameter_ref kind
+		| 5 | 6 | 7 -> (self#resolve_ttp_ref kind).ttp_type
 		| 8 ->
 			let e = self#read_expr in
 			let c = {null_class with cl_kind = KExpr e; cl_module = current_module } in
@@ -1082,17 +1082,13 @@ class hxb_reader
 						let el = loop_el() in
 						TNew(c,tl,el)
 					| 127 ->
-						(* TODO: this is giga awkward *)
-						let t = self#read_type_parameter_ref self#read_uleb128 in
-						let c = match t with | TInst(c,_) -> c | _ -> die "" __LOC__ in
+						let ttp = self#resolve_ttp_ref self#read_uleb128 in
 						let tl = self#read_types in
 						let el = loop_el() in
-						TNew(c,tl,el)
+						TNew(ttp.ttp_class,tl,el)
 					| 128 ->
-						(* TODO: this is giga awkward *)
-						let t = self#read_type_parameter_ref self#read_uleb128 in
-						let c = match t with | TInst(c,_) -> c | _ -> die "" __LOC__ in
-						TTypeExpr (TClassDecl c)
+						let ttp = self#resolve_ttp_ref self#read_uleb128 in
+						TTypeExpr (TClassDecl ttp.ttp_class)
 
 					(* unops 140-159 *)
 					| i when i >= 140 && i < 160 ->