Bladeren bron

add `__init__` as a fake field in DCE so it is recognized as entry point (see #3286)

Simon Krajewski 11 jaren geleden
bovenliggende
commit
fe683e5cd6
1 gewijzigde bestanden met toevoegingen van 10 en 1 verwijderingen
  1. 10 1
      dce.ml

+ 10 - 1
dce.ml

@@ -415,7 +415,16 @@ let run com main full =
 			begin match c.cl_constructor with
 				| Some cf -> loop false cf
 				| None -> ()
-			end
+			end;
+			begin match c.cl_init with
+				| Some e when keep_class || Meta.has Meta.KeepInit c.cl_meta ->
+					(* create a fake field to deal with our internal logic (issue #3286) *)
+					let cf = mk_field "__init__" e.etype e.epos in
+					cf.cf_expr <- Some e;
+					loop true cf
+				| _ ->
+					()
+			end;
 		| TEnumDecl en when keep_whole_enum dce en ->
 			mark_enum dce en
 		| _ ->