|
@@ -62,6 +62,10 @@ let keep_whole_class dce c =
|
|
| { cl_path = [],"Array" } -> not (dce.com.platform = Js)
|
|
| { cl_path = [],"Array" } -> not (dce.com.platform = Js)
|
|
| _ -> false)
|
|
| _ -> false)
|
|
|
|
|
|
|
|
+let keep_whole_enum dce en =
|
|
|
|
+ Meta.has Meta.Keep en.e_meta
|
|
|
|
+ || not (dce.full || is_std_file dce en.e_module.m_extra.m_file || has_meta Meta.Dce en.e_meta)
|
|
|
|
+
|
|
(* check if a field is kept *)
|
|
(* check if a field is kept *)
|
|
let keep_field dce cf =
|
|
let keep_field dce cf =
|
|
Meta.has Meta.Keep cf.cf_meta
|
|
Meta.has Meta.Keep cf.cf_meta
|
|
@@ -407,6 +411,8 @@ let run com main full =
|
|
| Some cf -> loop false cf
|
|
| Some cf -> loop false cf
|
|
| None -> ()
|
|
| None -> ()
|
|
end
|
|
end
|
|
|
|
+ | TEnumDecl en when keep_whole_enum dce en ->
|
|
|
|
+ mark_enum dce en
|
|
| _ ->
|
|
| _ ->
|
|
()
|
|
()
|
|
) com.types;
|
|
) com.types;
|
|
@@ -501,7 +507,7 @@ let run com main full =
|
|
if dce.debug then print_endline ("[DCE] Removed class " ^ (s_type_path c.cl_path));
|
|
if dce.debug then print_endline ("[DCE] Removed class " ^ (s_type_path c.cl_path));
|
|
loop acc l)
|
|
loop acc l)
|
|
end
|
|
end
|
|
- | (TEnumDecl e) as mt :: l when Meta.has Meta.Used e.e_meta || Meta.has Meta.Keep e.e_meta || e.e_extern || not (dce.full || is_std_file dce e.e_module.m_extra.m_file || has_meta Meta.Dce e.e_meta) ->
|
|
|
|
|
|
+ | (TEnumDecl en) as mt :: l when Meta.has Meta.Used en.e_meta || en.e_extern || keep_whole_enum dce en ->
|
|
loop (mt :: acc) l
|
|
loop (mt :: acc) l
|
|
| TEnumDecl e :: l ->
|
|
| TEnumDecl e :: l ->
|
|
if dce.debug then print_endline ("[DCE] Removed enum " ^ (s_type_path e.e_path));
|
|
if dce.debug then print_endline ("[DCE] Removed enum " ^ (s_type_path e.e_path));
|