src/Pure/Thy/thy_info.scala
changeset 66717 67dbf5cdc056
parent 66715 6bced18e2b91
child 66719 d37efafd55b5
equal deleted inserted replaced
66716:8737b866bd1c 66717:67dbf5cdc056
    51     def errors: List[String] = entries.flatMap(_.header.errors)
    51     def errors: List[String] = entries.flatMap(_.header.errors)
    52 
    52 
    53     lazy val syntax: Outer_Syntax =
    53     lazy val syntax: Outer_Syntax =
    54       resources.session_base.syntax.add_keywords(keywords).add_abbrevs(abbrevs)
    54       resources.session_base.syntax.add_keywords(keywords).add_abbrevs(abbrevs)
    55 
    55 
    56     def loaded_theories: Set[String] =
    56     def loaded_theories: Graph[String, Outer_Syntax] =
    57       resources.session_base.loaded_theories ++ rev_entries.map(_.name.theory)
    57       (resources.session_base.loaded_theories /: entries)({ case (graph, entry) =>
       
    58         val name = entry.name.theory
       
    59         val imports = entry.header.imports.map(p => p._1.theory)
       
    60 
       
    61         if (graph.defined(name))
       
    62           error("Duplicate loaded theory entry " + quote(name))
       
    63 
       
    64         for (dep <- imports if !graph.defined(dep))
       
    65           error("Missing loaded theory entry " + quote(dep) + " for " + quote(name))
       
    66 
       
    67         val syntax = Outer_Syntax.merge(imports.map(graph.get_node(_))) + entry.header
       
    68         (graph.new_node(name, syntax) /: imports)((g, dep) => g.add_edge(dep, name))
       
    69       })
    58 
    70 
    59     def loaded_files: List[(String, List[Path])] =
    71     def loaded_files: List[(String, List[Path])] =
    60     {
    72     {
    61       names.map(_.theory) zip
    73       names.map(_.theory) zip
    62         Par_List.map((e: () => List[Path]) => e(), names.map(resources.loaded_files(syntax, _)))
    74         Par_List.map((e: () => List[Path]) => e(), names.map(resources.loaded_files(syntax, _)))