anchor.diff:  (** Load the file or files described by `task` **)
   let load_one (env: env_t) (task: load_dependency_task) =
     match task with
  -  | LDInterleaved (intf, impl) -> tc_one env (Some intf) impl
  -  | LDSingle intf_or_impl -> tc_one env None intf_or_impl
  -  | LDInterfaceOfCurrentFile intf -> Universal.load_interface_decls env intf
  +  | LDInterleaved (intf, impl) -> tc_one env (Some intf.tf_fname) impl.tf_fname
  +  | LDSingle intf_or_impl -> tc_one env None intf_or_impl.tf_fname
  +  | LDInterfaceOfCurrentFile intf -> Universal.load_interface_decls env intf.tf_fname
  +
  +let tf_of_fname fname =
  +  { tf_fname = fname;
  +    tf_modtime = get_file_last_modification_time fname }
  +
  +(** Create a timed_fname with a dummy modtime **)
  +let dummy_tf_of_fname fname =
  +  { tf_fname = fname;
  +    tf_modtime = Util.now () }
   
   (** Build a list of load tasks from a list of dependencies **)
  -let rec tasks_of_deps (deps: list string) (final_tasks: list<load_dependency_task>) =
  -  match deps with
  -  | intf :: impl :: deps' when needs_interleaving intf impl ->
  -    LDInterleaved (intf, impl) :: tasks_of_deps deps' final_tasks
  -  | intf_or_impl :: deps' ->
  -    LDSingle intf_or_impl :: tasks_of_deps deps' final_tasks
  -  | [] -> final_tasks
  +let tasks_of_deps (deps: list string) (final_tasks: list<load_dependency_task>) =
  +  let wrap = dummy_tf_of_fname in
  +  let rec aux deps final_tasks =
  +    match deps with
  +    | intf :: impl :: deps' when needs_interleaving intf impl ->
  +      LDInterleaved (wrap intf, wrap impl) :: aux deps' final_tasks
  +    | intf_or_impl :: deps' ->
  +      LDSingle (wrap intf_or_impl) :: aux deps' final_tasks
  +    | [] -> final_tasks in
  +  aux deps final_tasks
   
   // Note: many of these functions are passing env around just for the sake of
   // providing a link to the solver (to avoid a cross-project dependency). They're
  
positive.code: 
  exception ExitREPL of int
  
  type load_dependency_task =
    | LDInterleaved of string (* interface *) * string (* impl *)
    | LDSingle of string (* interface or implementation *)
    | LDInterfaceOfCurrentFile of string (* interface *)
  
  type env_t = DsEnv.env * TcEnv.env
  
  
negative.code:          raise (Err (Util.format1 "Expecting an interface, got %s" intf));
        if not (Parser.Dep.is_implementation impl) then
           raise (Err (Util.format1 "Expecting an implementation, got %s" impl));
        [LDInterfaceOfCurrentFile (dummy_tf_of_fname intf)]
      | [impl] ->
        []
      | _ ->
  