src/Pure/Thy/thy_load.ML
changeset 23892 739707039b0d
parent 23890 9a75e9772761
child 23944 2ea068548a83
--- a/src/Pure/Thy/thy_load.ML	Sat Jul 21 09:14:16 2007 +0200
+++ b/src/Pure/Thy/thy_load.ML	Sat Jul 21 17:40:39 2007 +0200
@@ -66,6 +66,9 @@
 
 (* check files *)
 
+fun search_path dir path =
+  distinct (op =) (dir :: (if Path.is_basic path then (! load_path) else [Path.current]));
+
 fun check_ext exts dir src_path =
   let
     val path = Path.expand src_path;
@@ -75,11 +78,7 @@
       let val ext_path = Path.expand (Path.ext ext rel_path)
       in Option.map (fn id => (File.full_path ext_path, id)) (File.ident ext_path) end;
     fun try_prfx prfx = get_first (try_ext (Path.append prfx path)) ("" :: exts);
-  in
-    (case get_first try_prfx (if Path.is_basic path then (! load_path) else [Path.current]) of
-      NONE => try_prfx dir
-    | res => res)
-  end;
+  in get_first try_prfx (search_path dir path) end;
 
 val check_file = check_ext [];
 val check_ml = check_ext ml_exts;
@@ -88,7 +87,7 @@
   let val thy_file = thy_path name in
     (case check_file dir thy_file of
       NONE => error ("Could not find theory file " ^ quote (Path.implode thy_file) ^
-        " in " ^ commas_quote (map Path.implode (dir :: ! load_path)))  (* FIXME imprecise *)
+        " in " ^ commas_quote (map Path.implode (search_path dir thy_file)))
     | SOME thy_id => (thy_id, if ml then check_file dir (ml_path name) else NONE))
   end;