equal
deleted
inserted
replaced
286 (* load_thy *) |
286 (* load_thy *) |
287 |
287 |
288 fun required_by _ [] = "" |
288 fun required_by _ [] = "" |
289 | required_by s initiators = s ^ "(required by " ^ show_path (rev initiators) ^ ")"; |
289 | required_by s initiators = s ^ "(required by " ^ show_path (rev initiators) ^ ")"; |
290 |
290 |
291 fun load_thy time upd_time initiators dir name = |
291 fun load_thy time upd_time initiators name = |
292 let |
292 let |
293 val _ = priority ("Loading theory " ^ quote name ^ required_by " " initiators); |
293 val _ = priority ("Loading theory " ^ quote name ^ required_by " " initiators); |
294 val (pos, text, files) = |
294 val (pos, text, files) = |
295 (case get_deps name of |
295 (case get_deps name of |
296 SOME {master = SOME (master_path, _), text as _ :: _, files, ...} => |
296 SOME {master = SOME (master_path, _), text as _ :: _, files, ...} => |
298 | _ => error (loader_msg "corrupted dependency information" [name])); |
298 | _ => error (loader_msg "corrupted dependency information" [name])); |
299 val _ = touch_thy name; |
299 val _ = touch_thy name; |
300 val _ = CRITICAL (fn () => |
300 val _ = CRITICAL (fn () => |
301 change_deps name (Option.map (fn {master, text, parents, files, ...} => |
301 change_deps name (Option.map (fn {master, text, parents, files, ...} => |
302 make_deps upd_time master text parents files))); |
302 make_deps upd_time master text parents files))); |
303 val _ = OuterSyntax.load_thy dir name pos text (time orelse ! Output.timing); |
303 val _ = OuterSyntax.load_thy name pos text (time orelse ! Output.timing); |
304 in |
304 in |
305 CRITICAL (fn () => |
305 CRITICAL (fn () => |
306 (change_deps name |
306 (change_deps name |
307 (Option.map (fn {update_time, master, parents, files, ...} => |
307 (Option.map (fn {update_time, master, parents, files, ...} => |
308 make_deps update_time master [] parents files)); |
308 make_deps update_time master [] parents files)); |
433 val _ = change_thys (new_deps name parent_names entry); |
433 val _ = change_thys (new_deps name parent_names entry); |
434 |
434 |
435 val upd_time = serial (); |
435 val upd_time = serial (); |
436 val tasks_graph'' = tasks_graph' |> new_deps name parent_names |
436 val tasks_graph'' = tasks_graph' |> new_deps name parent_names |
437 (if all_current then Finished |
437 (if all_current then Finished |
438 else Task (fn () => load_thy time upd_time initiators dir' name)); |
438 else Task (fn () => load_thy time upd_time initiators name)); |
439 val tasks_len'' = if all_current then tasks_len' else tasks_len' + 1; |
439 val tasks_len'' = if all_current then tasks_len' else tasks_len' + 1; |
440 in (all_current, (tasks_graph'', tasks_len'')) end) |
440 in (all_current, (tasks_graph'', tasks_len'')) end) |
441 end; |
441 end; |
442 |
442 |
443 end; |
443 end; |