-and iter fname rdeps dname =
- if StringSet.mem dname rdeps then
- begin Printf.printf "%s: redundant %s\n" fname dname; rdeps end
- else
+and iter fname bdeps rdeps dname =
+ if StringSet.mem dname rdeps then begin
+ Printf.printf "%s: redundant %s\n" fname dname;
+ rdeps
+ end else if List.mem dname bdeps then begin
+ let loop = purge dname (List.rev bdeps) in
+ Printf.printf "circular: %s\n" (String.concat " " loop);
+ StringSet.add dname rdeps
+ end else