clarified signature;
authorwenzelm
Thu, 04 Nov 2021 15:44:37 +0100
changeset 74688 7e31f7022c7b
parent 74687 4a45dfee3402
child 74689 23a97a547a9e
clarified signature;
src/Pure/Thy/export_theory.scala
src/Pure/Thy/presentation.scala
--- a/src/Pure/Thy/export_theory.scala	Thu Nov 04 12:53:12 2021 +0100
+++ b/src/Pure/Thy/export_theory.scala	Thu Nov 04 15:44:37 2021 +0100
@@ -116,19 +116,21 @@
         (for ((k, xs) <- others.iterator) yield cache.string(k) -> xs.map(_.cache(cache))).toMap)
   }
 
+  def read_theory_parents(provider: Export.Provider, theory_name: String): Option[List[String]] =
+  {
+    if (theory_name == Thy_Header.PURE) Some(Nil)
+    else {
+      provider(Export.THEORY_PREFIX + "parents")
+        .map(entry => split_lines(entry.uncompressed.text))
+    }
+  }
+
   def read_theory(provider: Export.Provider, session_name: String, theory_name: String,
     cache: Term.Cache = Term.Cache.none): Theory =
   {
     val parents =
-      if (theory_name == Thy_Header.PURE) Nil
-      else {
-        provider(Export.THEORY_PREFIX + "parents") match {
-          case Some(entry) => split_lines(entry.uncompressed.text)
-          case None =>
-            error("Missing theory export in session " + quote(session_name) + ": " +
-              quote(theory_name))
-        }
-      }
+      read_theory_parents(provider, theory_name) getOrElse
+        error("Missing theory export in session " + quote(session_name) + ": " + quote(theory_name))
     val theory =
       Theory(theory_name, parents,
         read_types(provider),
--- a/src/Pure/Thy/presentation.scala	Thu Nov 04 12:53:12 2021 +0100
+++ b/src/Pure/Thy/presentation.scala	Thu Nov 04 15:44:37 2021 +0100
@@ -439,13 +439,13 @@
         else {
           val session1 = deps(session).theory_qualifier(name)
           val provider = Export.Provider.database_context(db_context, List(session1), name.theory)
-          provider(Export.THEORY_PREFIX + "parents") match {
-            case Some(_) =>
-              val theory = Export_Theory.read_theory(provider, session1, name.theory)
-              theory.entity_iterator.toVector
-            case None =>
-              progress.echo_warning("No theory exports for " + name)
-              Vector.empty
+          if (Export_Theory.read_theory_parents(provider, name.theory).isDefined) {
+            val theory = Export_Theory.read_theory(provider, session1, name.theory)
+            theory.entity_iterator.toVector
+          }
+          else {
+            progress.echo_warning("No theory exports for " + name)
+            Vector.empty
           }
         }
       })