clarified signature;
authorwenzelm
Thu, 17 May 2018 14:40:58 +0200
changeset 68202 a99180ad3441
parent 68201 dee993b88a7b
child 68203 cda4f24331d5
clarified signature;
src/Pure/Thy/export.scala
--- a/src/Pure/Thy/export.scala	Thu May 17 14:01:13 2018 +0200
+++ b/src/Pure/Thy/export.scala	Thu May 17 14:40:58 2018 +0200
@@ -124,7 +124,8 @@
       else Future.value((false, body)))
   }
 
-  def read_entry(db: SQL.Database, session_name: String, theory_name: String, name: String): Entry =
+  def read_entry(db: SQL.Database, session_name: String, theory_name: String, name: String)
+    : Option[Entry] =
   {
     val select =
       Data.table.select(List(Data.compressed, Data.body),
@@ -135,9 +136,9 @@
       if (res.next()) {
         val compressed = res.bool(Data.compressed)
         val body = res.bytes(Data.body)
-        Entry(session_name, theory_name, name, Future.value(compressed, body))
+        Some(Entry(session_name, theory_name, name, Future.value(compressed, body)))
       }
-      else error(message("Bad export", theory_name, name))
+      else None
     })
   }
 
@@ -274,11 +275,11 @@
           val xz_cache = XZ.make_cache()
 
           val matcher = make_matcher(export_pattern)
-          for { (theory_name, name) <- export_names if matcher(theory_name, name) }
-          {
-            val entry = read_entry(db, session_name, theory_name, name)
+          for {
+            (theory_name, name) <- export_names if matcher(theory_name, name)
+            entry <- read_entry(db, session_name, theory_name, name)
+          } {
             val path = export_dir + Path.basic(theory_name) + Path.explode(name)
-
             progress.echo("exporting " + path)
             Isabelle_System.mkdirs(path.dir)
             Bytes.write(path, entry.uncompressed(cache = xz_cache))