@@ -2001,7 +2001,21 @@ let generate ctx main =
loop_enum p e
| TNew (c,_,_) ->
iter (walk_expr p) e;
- loop_class p c
+ loop_class p c;
+ let rec loop c =
+ if PMap.mem (c.cl_path,"new") (!statics) then
+ ()
+ else begin
+ statics := PMap.add (c.cl_path,"new") () !statics;
+ (match c.cl_constructor with
+ | Some { cf_expr = Some e } -> walk_expr p e
+ | _ -> ());
+ match c.cl_super with
+ | None -> ()
+ | Some (csup,_) -> loop csup
+ end
+ in
+ loop c
| TMatch (_,(enum,_),_,_) ->
loop_enum p enum;
iter (walk_expr p) e