···723723 Some (from, to_, wdispatch source query)
724724 end
725725726726+ module StringSet = Set.Make (String)
727727+ let failed_cells = ref StringSet.empty
728728+729729+726730727731 let complete_prefix _id _deps is_toplevel source position =
728732 try begin
···806810 Logs.info (fun m -> m "About to type_implementation");
807811 let _ = Typemod.type_implementation unit_info env ast in
808812 let b = Sys.file_exists (prefix ^ ".cmi") in
813813+ failed_cells := StringSet.remove id !failed_cells;
809814 Logs.info (fun m -> m "file_exists: %s = %b\n%!" (prefix ^ ".cmi") b));
810815 (* reset_dirs () *) ()
811816 with
812817 | Env.Error e ->
813818 Logs.err (fun m -> m "Env.Error: %a" Env.report_error e);
819819+ failed_cells := StringSet.add id !failed_cells;
814820 ()
815821 | exn ->
816822 let s = Printexc.to_string exn in
···818824 Logs.err (fun m -> m "Backtrace: %s" (Printexc.get_backtrace ()));
819825 let ppf = Format.err_formatter in
820826 let _ = Location.report_exception ppf exn in
827827+ failed_cells := StringSet.add id !failed_cells;
821828 ()
822829823830···836843837844 let query_errors id deps is_toplevel orig_source =
838845 try
846846+ let deps = List.filter (fun dep -> not (StringSet.mem dep !failed_cells)) deps in
839847 (* Logs.info (fun m -> m "About to mangle toplevel"); *)
840848 let line1, src = mangle_toplevel is_toplevel orig_source deps in
841849 let id = Option.get id in
···881889882890 let type_enclosing _id deps is_toplevel orig_source position =
883891 try
892892+ let deps = List.filter (fun dep -> not (StringSet.mem dep !failed_cells)) deps in
884893 let line1, src = mangle_toplevel is_toplevel orig_source deps in
885894 let src = line1 ^ src in
886895 let position =