let check_warnings env =
(* check for unused templates *)
let env = Hashtbl.fold (fun name spec env ->
let (_, _, cloc) = spec
in Environment.add_warning env cloc ("Template definition '" ^ name ^ "' is never used.")
) env.templates env
(* check variables usage *)
in let rec loop_names env max names = function
| n when n = max -> env
| n ->
let env =
try
let varprop = Hashtbl.find env.varprops n
in let (_, line) = varprop.declaration_loc
in match line with
| 0 -> env
| _ ->
let env = if varprop.read_after_declared = false && line!= 0 then
add_warning env varprop.declaration_loc ("Variable "^(List.hd names)^" is never read.")
else
env
in env
with Not_found ->
env
in loop_names env max (List.tl names) (n + 1)
in let env = loop_names env (List.length env.names) env.names 0
(* print warnings *)
in List.fold_left (fun _ warning -> print_string ("WARNING: "^warning^"\n")) () (List.rev env.warnings);
env