src/Pure/Thy/sessions.scala
changeset 66963 1c3d0c12bb51
parent 66962 e1bde71bace6
child 66964 9f2de457b95e
equal deleted inserted replaced
66962:e1bde71bace6 66963:1c3d0c12bb51
   316       })
   316       })
   317 
   317 
   318     Deps(session_bases, Known.make(Path.current, session_bases.toList.map(_._2)))
   318     Deps(session_bases, Known.make(Path.current, session_bases.toList.map(_._2)))
   319   }
   319   }
   320 
   320 
   321   def session_base_errors(
   321 
       
   322   /* base info */
       
   323 
       
   324   sealed case class Base_Info(base: Base, errors: List[String])
       
   325   {
       
   326     def platform_path: Base_Info = copy(base = base.platform_path)
       
   327     def check: Base = if (errors.isEmpty) base else error(cat_lines(errors))
       
   328   }
       
   329 
       
   330   def session_base_info(
   322     options: Options,
   331     options: Options,
   323     session: String,
   332     session: String,
   324     dirs: List[Path] = Nil,
   333     dirs: List[Path] = Nil,
   325     inlined_files: Boolean = false,
   334     inlined_files: Boolean = false,
   326     all_known: Boolean = false): (List[String], Base) =
   335     all_known: Boolean = false): Base_Info =
   327   {
   336   {
   328     val full_sessions = load(options, dirs = dirs)
   337     val full_sessions = load(options, dirs = dirs)
   329     val global_theories = full_sessions.global_theories
   338     val global_theories = full_sessions.global_theories
   330     val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session)))
   339     val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session)))
   331 
   340 
   332     val sessions: T = if (all_known) full_sessions else selected_sessions
   341     val deps =
   333     val deps = Sessions.deps(sessions, global_theories, inlined_files = inlined_files)
   342       Sessions.deps(if (all_known) full_sessions else selected_sessions,
       
   343         global_theories, inlined_files = inlined_files)
       
   344 
   334     val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session)
   345     val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session)
   335     (deps.errors, base)
   346 
   336   }
   347     Base_Info(base, deps.errors)
   337 
       
   338   def session_base(
       
   339     options: Options,
       
   340     session: String,
       
   341     dirs: List[Path] = Nil,
       
   342     inlined_files: Boolean = false,
       
   343     all_known: Boolean = false): Base =
       
   344   {
       
   345     val (errs, base) =
       
   346       session_base_errors(options, session, dirs = dirs,
       
   347         inlined_files = inlined_files, all_known = all_known)
       
   348     if (errs.isEmpty) base else error(cat_lines(errs))
       
   349   }
   348   }
   350 
   349 
   351 
   350 
   352   /* cumulative session info */
   351   /* cumulative session info */
   353 
   352