Преглед изворни кода

[hl] make sure -dce full will not remove @:struct fields as they match native code

Nicolas Cannasse пре 1 година
родитељ
комит
bc660af559
1 измењених фајлова са 3 додато и 2 уклоњено
  1. 3 2
      src/optimization/dce.ml

+ 3 - 2
src/optimization/dce.ml

@@ -622,7 +622,7 @@ and expr dce e =
 		check_op dce op;
 		check_and_add_feature dce "dynamic_array_write";
 		expr dce e1;
-		expr dce e2;		
+		expr dce e2;
 	| TArray(({etype = t} as e1),e2) when is_array t ->
 		check_and_add_feature dce "array_read";
 		expr dce e1;
@@ -733,8 +733,9 @@ let collect_entry_points dce com =
 		match t with
 		| TClassDecl c ->
 			let keep_class = keep_whole_class dce c && (not (has_class_flag c CExtern) || (has_class_flag c CInterface)) in
+			let is_struct = dce.com.platform = Hl && Meta.has Meta.Struct c.cl_meta in
 			let loop kind cf =
-				if keep_class || keep_field dce cf c kind then mark_field dce c cf kind
+				if keep_class || is_struct || keep_field dce cf c kind then mark_field dce c cf kind
 			in
 			List.iter (loop CfrStatic) c.cl_ordered_statics;
 			List.iter (loop CfrMember) c.cl_ordered_fields;