src/Pure/PIDE/command.scala
changeset 72748 04d5f6d769a7
parent 72747 5f9d66155081
child 72757 38e05b7ded61
equal deleted inserted replaced
72747:5f9d66155081 72748:04d5f6d769a7
   413   {
   413   {
   414     span.name match {
   414     span.name match {
   415       // inlined errors
   415       // inlined errors
   416       case Thy_Header.THEORY =>
   416       case Thy_Header.THEORY =>
   417         val reader = Scan.char_reader(Token.implode(span.content))
   417         val reader = Scan.char_reader(Token.implode(span.content))
   418         val imports_pos = resources.check_thy_reader(node_name, reader).imports_pos
   418         val header = resources.check_thy_reader(node_name, reader)
       
   419         val imports_pos = header.imports_pos
   419         val raw_imports =
   420         val raw_imports =
   420           try {
   421           try {
   421             val read_imports = Thy_Header.read(reader, Token.Pos.none).imports
   422             val read_imports = Thy_Header.read(reader, Token.Pos.none).imports
   422             if (imports_pos.length == read_imports.length) read_imports else error("")
   423             if (imports_pos.length == read_imports.length) read_imports else error("")
   423           }
   424           }
   424           catch { case exn: Throwable => List.fill(imports_pos.length)("") }
   425           catch { case _: Throwable => List.fill(imports_pos.length)("") }
   425 
   426 
   426         val errors =
   427         val errs1 =
   427           for { ((import_name, pos), s) <- imports_pos zip raw_imports if !can_import(import_name) }
   428           for { ((import_name, pos), s) <- imports_pos zip raw_imports if !can_import(import_name) }
   428           yield {
   429           yield {
   429             val completion =
   430             val completion =
   430               if (Thy_Header.is_base_name(s)) resources.complete_import_name(node_name, s) else Nil
   431               if (Thy_Header.is_base_name(s)) resources.complete_import_name(node_name, s) else Nil
   431             val msg =
   432             "Bad theory import " +
   432               "Bad theory import " +
   433               Markup.Path(import_name.node).markup(quote(import_name.toString)) +
   433                 Markup.Path(import_name.node).markup(quote(import_name.toString)) +
   434               Position.here(pos) + Completion.report_theories(pos, completion)
   434                 Position.here(pos) + Completion.report_theories(pos, completion)
       
   435             Exn.Exn[Command.Blob](ERROR(msg))
       
   436           }
   435           }
   437         (errors, -1)
   436         val errs2 =
       
   437           for {
       
   438             (_, spec) <- header.keywords
       
   439             if !Command_Span.load_commands.exists(_.name == spec.load_command)
       
   440           } yield { "Unknown load command specification: " + quote(spec.load_command) }
       
   441       ((errs1 ::: errs2).map(msg => Exn.Exn[Command.Blob](ERROR(msg))), -1)
   438 
   442 
   439       // auxiliary files
   443       // auxiliary files
   440       case _ =>
   444       case _ =>
   441         val (files, index) = span.loaded_files(syntax)
   445         val (files, index) = span.loaded_files(syntax)
   442         val blobs =
   446         val blobs =