Browse Source

if method is kept, constructor should be kept also (#6819)

Alexander Kuzmenko 7 years ago
parent
commit
75edacf944
2 changed files with 6 additions and 1 deletions
  1. 1 1
      src/optimization/dce.ml
  2. 5 0
      src/typing/type.ml

+ 1 - 1
src/optimization/dce.ml

@@ -128,7 +128,7 @@ and mark_field dce c cf stat =
 			| Some (c,_) -> mark_field dce c cf stat
 		end else
 			add cf;
-		if not stat && is_physical_var_field cf then
+		if not stat && is_physical_field cf then
 			match c.cl_constructor with
 				| None -> ()
 				| Some ctor -> mark_field dce c ctor false

+ 5 - 0
src/typing/type.ml

@@ -776,6 +776,11 @@ let is_physical_var_field f =
 	| Var _ -> Meta.has Meta.IsVar f.cf_meta
 	| _ -> false
 
+let is_physical_field f =
+	match f.cf_kind with
+	| Method _ -> true
+	| _ -> is_physical_var_field f
+
 let is_extern_field f =
 	match f.cf_kind with
 	| Method _ -> false