clarified signature;
authorwenzelm
Wed, 03 Aug 2022 13:07:32 +0200
changeset 75747 8dc9d979bbac
parent 75746 3513fdfeb4d8
child 75748 b6d74c90b588
clarified signature;
src/Pure/Thy/export_theory.scala
src/Pure/Thy/presentation.scala
--- a/src/Pure/Thy/export_theory.scala	Wed Aug 03 12:58:17 2022 +0200
+++ b/src/Pure/Thy/export_theory.scala	Wed Aug 03 13:07:32 2022 +0200
@@ -122,29 +122,33 @@
     provider: Export.Provider,
     session_name: String,
     theory_name: String,
+    permissive: Boolean = false,
     cache: Term.Cache = Term.Cache.none
   ): Theory = {
     val theory_provider = provider.focus(theory_name)
-    val parents =
-      read_theory_parents(theory_provider, theory_name) getOrElse
+    read_theory_parents(theory_provider, theory_name) match {
+      case None if permissive => no_theory
+      case None =>
         error("Missing theory export in session " + quote(session_name) + ": " + quote(theory_name))
-    val theory =
-      Theory(theory_name, parents,
-        read_types(theory_provider),
-        read_consts(theory_provider),
-        read_axioms(theory_provider),
-        read_thms(theory_provider),
-        read_classes(theory_provider),
-        read_locales(theory_provider),
-        read_locale_dependencies(theory_provider),
-        read_classrel(theory_provider),
-        read_arities(theory_provider),
-        read_constdefs(theory_provider),
-        read_typedefs(theory_provider),
-        read_datatypes(theory_provider),
-        read_spec_rules(theory_provider),
-        read_others(theory_provider))
-    if (cache.no_cache) theory else theory.cache(cache)
+      case Some(parents) =>
+        val theory =
+          Theory(theory_name, parents,
+            read_types(theory_provider),
+            read_consts(theory_provider),
+            read_axioms(theory_provider),
+            read_thms(theory_provider),
+            read_classes(theory_provider),
+            read_locales(theory_provider),
+            read_locale_dependencies(theory_provider),
+            read_classrel(theory_provider),
+            read_arities(theory_provider),
+            read_constdefs(theory_provider),
+            read_typedefs(theory_provider),
+            read_datatypes(theory_provider),
+            read_spec_rules(theory_provider),
+            read_others(theory_provider))
+        if (cache.no_cache) theory else theory.cache(cache)
+    }
   }
 
   def read_pure[A](store: Sessions.Store, read: (Export.Provider, String, String) => A): A = {
--- a/src/Pure/Thy/presentation.scala	Wed Aug 03 12:58:17 2022 +0200
+++ b/src/Pure/Thy/presentation.scala	Wed Aug 03 13:07:32 2022 +0200
@@ -132,10 +132,8 @@
                     val theory =
                       if (thy_name == Thy_Header.PURE) Export_Theory.no_theory
                       else {
-                        if (Export_Theory.read_theory_parents(provider, thy_name).isDefined) {
-                          Export_Theory.read_theory(provider, session, thy_name, cache = db_context.cache)
-                        }
-                        else Export_Theory.no_theory
+                        Export_Theory.read_theory(provider, session, thy_name,
+                          permissive = true, cache = db_context.cache)
                       }
                     thy_name -> Node_Info.make(theory)
                   }