src/Pure/Tools/update_imports.scala
changeset 65533 4a7e794944df
parent 65532 febfd9f78bd4
child 65534 b6250ee6ce79
equal deleted inserted replaced
65532:febfd9f78bd4 65533:4a7e794944df
    69       val info = full_sessions(session_name)
    69       val info = full_sessions(session_name)
    70       val session_base = deps(session_name)
    70       val session_base = deps(session_name)
    71       val resources = new Resources(session_base)
    71       val resources = new Resources(session_base)
    72       val local_theories = session_base.known.theories_local.iterator.map(_._2).toSet
    72       val local_theories = session_base.known.theories_local.iterator.map(_._2).toSet
    73 
    73 
    74       def standard_import(qualifier: String, s: String): String =
    74       def standard_import(qualifier: String, dir: String, s: String): String =
    75       {
    75       {
    76         val name = resources.import_name(qualifier, "", s)
    76         val name = resources.import_name(qualifier, dir, s)
    77         if (!local_theories.contains(name)) s
    77         if (!local_theories.contains(name)) s
    78         if (resources.theory_qualifier(name) != qualifier) name.theory
    78         if (resources.theory_qualifier(name) != qualifier) name.theory
    79         else if (Thy_Header.is_base_name(s)) name.theory_base_name
    79         else if (Thy_Header.is_base_name(s)) name.theory_base_name
    80         else s
    80         else s
    81       }
    81       }
    82 
    82 
    83       val updates_root =
    83       val updates_root =
    84         for {
    84         for {
    85           (_, pos) <- info.theories.flatMap(_._2)
    85           (_, pos) <- info.theories.flatMap(_._2)
    86           upd <- update_name(Sessions.root_syntax.keywords, pos,
    86           upd <- update_name(Sessions.root_syntax.keywords, pos,
    87             standard_import(info.theory_qualifier, _))
    87             standard_import(info.theory_qualifier, info.dir.implode, _))
    88         } yield upd
    88         } yield upd
    89 
    89 
    90       val updates_theories =
    90       val updates_theories =
    91         for {
    91         for {
    92           (_, name) <- session_base.known.theories_local.toList
    92           (_, name) <- session_base.known.theories_local.toList
    94             // FIXME proper UTF8 positions for check_thy
    94             // FIXME proper UTF8 positions for check_thy
    95             resources.check_thy_reader(name,
    95             resources.check_thy_reader(name,
    96               Scan.char_reader(File.read(Path.explode(name.node))),
    96               Scan.char_reader(File.read(Path.explode(name.node))),
    97               Token.Pos.file(name.node)).imports
    97               Token.Pos.file(name.node)).imports
    98           upd <- update_name(session_base.syntax.keywords, pos,
    98           upd <- update_name(session_base.syntax.keywords, pos,
    99             standard_import(resources.theory_qualifier(name), _))
    99             standard_import(resources.theory_qualifier(name), name.master_dir, _))
   100         } yield upd
   100         } yield upd
   101 
   101 
   102       updates_root ::: updates_theories
   102       updates_root ::: updates_theories
   103     })
   103     })
   104   }
   104   }