src/Pure/Tools/dump.scala
changeset 68318 5971199863ea
parent 68316 a1e5de3681f0
child 68319 2e168460a9c3
equal deleted inserted replaced
68317:938803796a8b 68318:5971199863ea
    48     if (Build.build_logic(options, logic, progress = progress, dirs = dirs,
    48     if (Build.build_logic(options, logic, progress = progress, dirs = dirs,
    49       system_mode = system_mode) != 0) error(logic + " FAILED")
    49       system_mode = system_mode) != 0) error(logic + " FAILED")
    50 
    50 
    51     val dump_options = options.int.update("completion_limit", 0).bool.update("ML_statistics", false)
    51     val dump_options = options.int.update("completion_limit", 0).bool.update("ML_statistics", false)
    52 
    52 
       
    53 
       
    54     /* dependencies */
       
    55 
    53     val deps =
    56     val deps =
    54       Sessions.load_structure(dump_options, dirs = dirs, select_dirs = select_dirs).
    57       Sessions.load_structure(dump_options, dirs = dirs, select_dirs = select_dirs).
    55         selection_deps(selection)
    58         selection_deps(selection)
    56 
    59 
       
    60     val include_sessions =
       
    61       deps.sessions_structure.imports_topological_order
       
    62 
       
    63     val use_theories =
       
    64       deps.sessions_structure.build_topological_order.
       
    65         flatMap(session_name => deps.session_bases(session_name).used_theories.map(_.theory))
       
    66 
       
    67 
       
    68     /* session */
       
    69 
    57     val session =
    70     val session =
    58       Thy_Resources.start_session(dump_options, logic, session_dirs = dirs,
    71       Thy_Resources.start_session(dump_options, logic, session_dirs = dirs,
    59         include_sessions = deps.sessions_structure.imports_topological_order,
    72         include_sessions = include_sessions, progress = progress, log = log)
    60         progress = progress, log = log)
       
    61 
    73 
    62     val theories = deps.all_known.theory_graph.topological_order.map(_.theory)
    74     try {
    63     val theories_result = session.use_theories(theories, progress = progress)
    75       val theories_result = session.use_theories(use_theories, progress = progress)
    64 
    76       val args = Aspect_Args(dump_options, progress, output_dir, theories_result)
    65     val args = Aspect_Args(dump_options, progress, output_dir, theories_result)
    77       aspects.foreach(_.operation(args))
    66 
    78     }
    67     try { aspects.foreach(aspect => aspect.operation(args)) }
       
    68     catch { case exn: Throwable => session.stop (); throw exn }
    79     catch { case exn: Throwable => session.stop (); throw exn }
    69     session.stop()
    80     session.stop()
    70   }
    81   }
    71 
    82 
    72 
    83