Procházet zdrojové kódy

browse constructors code as part of class dependency resolution

Nicolas Cannasse před 13 roky
rodič
revize
e527859d2d
1 změnil soubory, kde provedl 15 přidání a 1 odebrání
  1. 15 1
      typer.ml

+ 15 - 1
typer.ml

@@ -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