src/Pure/Thy/sessions.scala
changeset 68542 02df6c68a8cb
parent 68523 ccacc84e0251
child 68732 5472f4409fe6
equal deleted inserted replaced
68541:12b4b3bc585d 68542:02df6c68a8cb
   459 
   459 
   460     val selected_sessions1 =
   460     val selected_sessions1 =
   461     {
   461     {
   462       val sel_sessions1 = session1 :: session :: include_sessions
   462       val sel_sessions1 = session1 :: session :: include_sessions
   463       val select_sessions1 =
   463       val select_sessions1 =
   464         if (session_focus) full_sessions1.imports_descendants(sel_sessions1) else sel_sessions1
   464         if (session_focus) {
       
   465           full_sessions1.check_sessions(sel_sessions1)
       
   466           full_sessions1.imports_descendants(sel_sessions1)
       
   467         }
       
   468         else sel_sessions1
   465       full_sessions1.selection(Selection(sessions = select_sessions1))
   469       full_sessions1.selection(Selection(sessions = select_sessions1))
   466     }
   470     }
   467 
   471 
   468     val sessions1 = if (all_known) full_sessions1 else selected_sessions1
   472     val sessions1 = if (all_known) full_sessions1 else selected_sessions1
   469     val deps1 = Sessions.deps(sessions1, global_theories, progress = progress)
   473     val deps1 = Sessions.deps(sessions1, global_theories, progress = progress)
   677                   error("Duplicate global theory " + quote(thy) + Position.here(info.pos))
   681                   error("Duplicate global theory " + quote(thy) + Position.here(info.pos))
   678                 case _ => global + (thy -> qualifier)
   682                 case _ => global + (thy -> qualifier)
   679               }
   683               }
   680           })
   684           })
   681 
   685 
   682     def selection(sel: Selection): Structure =
   686     def check_sessions(names: List[String])
   683     {
   687     {
   684       val bad_sessions =
   688       val bad_sessions = SortedSet(names.filterNot(defined(_)): _*).toList
   685         SortedSet((sel.base_sessions ::: sel.exclude_sessions ::: sel.sessions).
       
   686           filterNot(defined(_)): _*).toList
       
   687       if (bad_sessions.nonEmpty)
   689       if (bad_sessions.nonEmpty)
   688         error("Undefined session(s): " + commas_quote(bad_sessions))
   690         error("Undefined session(s): " + commas_quote(bad_sessions))
       
   691     }
       
   692 
       
   693     def selection(sel: Selection): Structure =
       
   694     {
       
   695       check_sessions(sel.base_sessions ::: sel.exclude_sessions ::: sel.sessions)
   689 
   696 
   690       val excluded = sel.excluded(build_graph).toSet
   697       val excluded = sel.excluded(build_graph).toSet
   691 
   698 
   692       def restrict(graph: Graph[String, Info]): Graph[String, Info] =
   699       def restrict(graph: Graph[String, Info]): Graph[String, Info] =
   693       {
   700       {