clarified signature: more explicit types;
authorwenzelm
Wed, 08 Oct 2025 10:07:38 +0200
changeset 83258 9735569d986b
parent 83255 46d2d8d9423e
child 83259 4dabf4db7cec
clarified signature: more explicit types;
src/Pure/Build/build_job.scala
--- a/src/Pure/Build/build_job.scala	Tue Oct 07 20:25:22 2025 +0200
+++ b/src/Pure/Build/build_job.scala	Wed Oct 08 10:07:38 2025 +0200
@@ -97,6 +97,19 @@
     build_uuid: String
   ) extends Name.T
 
+  abstract class Build_Session extends Session {
+    /* errors */
+
+    private val build_errors: Promise[List[String]] = Future.promise
+
+    def errors_result(): Exn.Result[List[String]] = build_errors.join_result
+    def errors_cancel(): Unit = build_errors.cancel()
+    def errors(errs: List[String]): Unit = {
+      try { build_errors.fulfill(errs) }
+      catch { case _: IllegalStateException => }
+    }
+  }
+
   class Session_Job private[Build_Job](
     build_context: Build.Context,
     session_context: Session_Context,
@@ -174,7 +187,7 @@
           /* session */
 
           val session =
-            new Session {
+            new Build_Session {
               override def session_options: Options = options
 
               override val store: Store = build_context.store
@@ -191,17 +204,6 @@
                 Document.Blobs.make(session_blobs(node_name))
             }
 
-          object Build_Session_Errors {
-            private val promise: Promise[List[String]] = Future.promise
-
-            def result: Exn.Result[List[String]] = promise.join_result
-            def cancel(): Unit = promise.cancel()
-            def apply(errs: List[String]): Unit = {
-              try { promise.fulfill(errs) }
-              catch { case _: IllegalStateException => }
-            }
-          }
-
           val export_consumer =
             Export.consumer(store.open_database(session_name, output = true, server = server),
               store.cache, progress = progress)
@@ -268,7 +270,7 @@
           }
 
           session.init_protocol_handler(new Session.Protocol_Handler {
-              override def exit(): Unit = Build_Session_Errors.cancel()
+              override def exit(): Unit = session.errors_cancel()
 
               private def build_session_finished(msg: Prover.Protocol_Output): Boolean = {
                 val (rc, errors) =
@@ -286,7 +288,7 @@
                   catch { case ERROR(err) => (Process_Result.RC.failure, List(err)) }
 
                 session.protocol_command("Prover.stop", XML.Encode.int(rc))
-                Build_Session_Errors(errors)
+                session.errors(errors)
                 true
               }
 
@@ -387,7 +389,7 @@
                       case Markup.Process_Result(result) => ": " + result.print_rc
                       case _ => ""
                     })
-                Build_Session_Errors(List(err))
+                session.errors(List(err))
               }
             case _ =>
           }
@@ -421,7 +423,7 @@
                         (session_name, info.theories))
                     }
                   session.protocol_command("build_session", resources_xml, args_xml)
-                  Build_Session_Errors.result
+                  session.errors_result()
                 case Exn.Exn(exn) => Exn.Res(List(Exn.message(exn)))
               }
             }