src/Pure/PIDE/resources.scala
changeset 57615 df1b3452d71c
parent 56913 df4cd6e1fdfa
child 57905 c0c5652e796e
--- a/src/Pure/PIDE/resources.scala	Wed Jul 23 11:53:34 2014 +0200
+++ b/src/Pure/PIDE/resources.scala	Wed Jul 23 13:01:30 2014 +0200
@@ -89,19 +89,22 @@
   def check_thy_reader(qualifier: String, name: Document.Node.Name, reader: Reader[Char])
     : Document.Node.Header =
   {
-    try {
-      val header = Thy_Header.read(reader).decode_symbols
+    if (reader.source.length > 0) {
+      try {
+        val header = Thy_Header.read(reader).decode_symbols
 
-      val base_name = Long_Name.base_name(name.theory)
-      val name1 = header.name
-      if (base_name != name1)
-        error("Bad file name " + Resources.thy_path(Path.basic(base_name)) +
-          " for theory " + quote(name1))
+        val base_name = Long_Name.base_name(name.theory)
+        val name1 = header.name
+        if (base_name != name1)
+          error("Bad file name " + Resources.thy_path(Path.basic(base_name)) +
+            " for theory " + quote(name1))
 
-      val imports = header.imports.map(import_name(qualifier, name, _))
-      Document.Node.Header(imports, header.keywords, Nil)
+        val imports = header.imports.map(import_name(qualifier, name, _))
+        Document.Node.Header(imports, header.keywords, Nil)
+      }
+      catch { case exn: Throwable => Document.Node.bad_header(Exn.message(exn)) }
     }
-    catch { case exn: Throwable => Document.Node.bad_header(Exn.message(exn)) }
+    else Document.Node.no_header
   }
 
   def check_thy(qualifier: String, name: Document.Node.Name): Document.Node.Header =