src/Pure/Thy/sessions.scala
changeset 66969 39077839947e
parent 66968 9991671c98aa
child 66970 13857f49d215
equal deleted inserted replaced
66968:9991671c98aa 66969:39077839947e
   328   def session_base_info(
   328   def session_base_info(
   329     options: Options,
   329     options: Options,
   330     session: String,
   330     session: String,
   331     dirs: List[Path] = Nil,
   331     dirs: List[Path] = Nil,
   332     infos: List[Info] = Nil,
   332     infos: List[Info] = Nil,
   333     inlined_files: Boolean = false,
       
   334     all_known: Boolean = false,
   333     all_known: Boolean = false,
   335     required_session: Boolean = false): Base_Info =
   334     required_session: Boolean = false): Base_Info =
   336   {
   335   {
   337     val full_sessions = load(options, dirs = dirs, infos = infos)
   336     val full_sessions = load(options, dirs = dirs, infos = infos)
   338     val global_theories = full_sessions.global_theories
   337     val global_theories = full_sessions.global_theories
   339     val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session)))
   338     val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session)))
   340 
   339 
   341     val sessions: T = if (all_known) full_sessions else selected_sessions
   340     val sessions: T = if (all_known) full_sessions else selected_sessions
   342     val deps = Sessions.deps(sessions, global_theories, inlined_files = inlined_files)
   341     val deps = Sessions.deps(sessions, global_theories)
   343     val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session)
   342     val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session)
   344 
   343 
   345     val other_session: Option[(String, List[Info])] =
   344     val other_session: Option[(String, List[Info])] =
   346       if (required_session && !is_pure(session)) {
   345       if (required_session && !is_pure(session)) {
   347         val info = sessions(session)
   346         val info = sessions(session)
   383       else None
   382       else None
   384 
   383 
   385     other_session match {
   384     other_session match {
   386       case None => new Base_Info(session, sessions, deps, base, infos)
   385       case None => new Base_Info(session, sessions, deps, base, infos)
   387       case Some((other_name, more_infos)) =>
   386       case Some((other_name, more_infos)) =>
   388         session_base_info(options, other_name, dirs = dirs, infos = more_infos ::: infos,
   387         session_base_info(options, other_name,
   389           inlined_files = inlined_files, all_known = all_known)
   388           dirs = dirs, infos = more_infos ::: infos, all_known = all_known)
   390     }
   389     }
   391   }
   390   }
   392 
   391 
   393   final class Base_Info private [Sessions](
   392   final class Base_Info private [Sessions](
   394     val session: String, val sessions: T, val deps: Deps, val base: Base, val infos: List[Info])
   393     val session: String, val sessions: T, val deps: Deps, val base: Base, val infos: List[Info])