浏览代码

[hl] Respect hl-legacy32 for I64 arrays (#11903)

* [hl] Respect hl-legacy32 for I64 arrays

* [hl] Use tclass option for array i64

It is None if hl-legacy32 is defined
tobil4sk 3 月之前
父节点
当前提交
a779309be0
共有 3 个文件被更改,包括 10 次插入3 次删除
  1. 6 3
      src/generators/genhl.ml
  2. 2 0
      std/hl/types/ArrayBase.hx
  3. 2 0
      std/hl/types/ArrayBytes.hx

+ 6 - 3
src/generators/genhl.ml

@@ -78,7 +78,7 @@ type array_impl = {
 	ai32 : tclass;
 	ai32 : tclass;
 	af32 : tclass;
 	af32 : tclass;
 	af64 : tclass;
 	af64 : tclass;
-	ai64 : tclass;
+	ai64 : tclass option;
 }
 }
 
 
 type constval =
 type constval =
@@ -290,7 +290,10 @@ let array_class ctx t =
 	| HF64 ->
 	| HF64 ->
 		ctx.array_impl.af64
 		ctx.array_impl.af64
 	| HI64 ->
 	| HI64 ->
-		ctx.array_impl.ai64
+		begin match ctx.array_impl.ai64 with
+		| None -> die "" __LOC__
+		| Some c -> c
+		end
 	| HDyn ->
 	| HDyn ->
 		ctx.array_impl.adyn
 		ctx.array_impl.adyn
 	| _ ->
 	| _ ->
@@ -4196,7 +4199,7 @@ let create_context com =
 			ai32 = get_class "ArrayBytes_Int";
 			ai32 = get_class "ArrayBytes_Int";
 			af32 = get_class "ArrayBytes_hl_F32";
 			af32 = get_class "ArrayBytes_hl_F32";
 			af64 = get_class "ArrayBytes_Float";
 			af64 = get_class "ArrayBytes_Float";
-			ai64 = get_class "ArrayBytes_hl_I64";
+			ai64 = if Gctx.raw_defined com "hl_legacy32" then None else Some (get_class "ArrayBytes_hl_I64");
 		};
 		};
 		base_class = get_class "Class";
 		base_class = get_class "Class";
 		base_enum = get_class "Enum";
 		base_enum = get_class "Enum";

+ 2 - 0
std/hl/types/ArrayBase.hx

@@ -149,6 +149,7 @@ class ArrayBase extends ArrayAccess {
 		return a;
 		return a;
 	}
 	}
 
 
+	#if !hl_legacy32
 	public static function allocI64(bytes:BytesAccess<I64>, length:Int) @:privateAccess {
 	public static function allocI64(bytes:BytesAccess<I64>, length:Int) @:privateAccess {
 		var a:ArrayBytes.ArrayI64 = untyped $new(ArrayBytes.ArrayI64);
 		var a:ArrayBytes.ArrayI64 = untyped $new(ArrayBytes.ArrayI64);
 		a.length = length;
 		a.length = length;
@@ -156,4 +157,5 @@ class ArrayBase extends ArrayAccess {
 		a.size = length;
 		a.size = length;
 		return a;
 		return a;
 	}
 	}
+	#end
 }
 }

+ 2 - 0
std/hl/types/ArrayBytes.hx

@@ -362,4 +362,6 @@ typedef ArrayI32 = ArrayBytes<Int>;
 typedef ArrayUI16 = ArrayBytes<UI16>;
 typedef ArrayUI16 = ArrayBytes<UI16>;
 typedef ArrayF32 = ArrayBytes<F32>;
 typedef ArrayF32 = ArrayBytes<F32>;
 typedef ArrayF64 = ArrayBytes<Float>;
 typedef ArrayF64 = ArrayBytes<Float>;
+#if !hl_legacy32
 typedef ArrayI64 = ArrayBytes<I64>;
 typedef ArrayI64 = ArrayBytes<I64>;
+#end