prefer Process_Result.RC.merge: strict treatment of interrupt;
authorwenzelm
Sun, 23 Jul 2023 13:09:15 +0200
changeset 78439 001d423daf7c
parent 78438 d79eb2a6de0f
child 78440 126a12483c67
prefer Process_Result.RC.merge: strict treatment of interrupt;
src/HOL/Tools/Nitpick/kodkod.scala
src/Pure/Admin/build_history.scala
--- a/src/HOL/Tools/Nitpick/kodkod.scala	Sun Jul 23 12:59:52 2023 +0200
+++ b/src/HOL/Tools/Nitpick/kodkod.scala	Sun Jul 23 13:09:15 2023 +0200
@@ -62,7 +62,7 @@
       private val out = new StringBuilder
       private val err = new StringBuilder
 
-      def return_code(i: Int): Unit = synchronized { rc = rc max i}
+      def return_code(i: Int): Unit = synchronized { rc = Process_Result.RC.merge(rc, i) }
 
       override def output(s: String): Unit = synchronized {
         Exn.Interrupt.expose()
--- a/src/Pure/Admin/build_history.scala	Sun Jul 23 12:59:52 2023 +0200
+++ b/src/Pure/Admin/build_history.scala	Sun Jul 23 13:09:15 2023 +0200
@@ -519,7 +519,7 @@
           cat_lines(for ((_, log_path) <- results) yield log_path.implode))
       }
 
-      val rc = results.foldLeft(Process_Result.RC.ok) { case (rc, (res, _)) => rc max res.rc }
+      val rc = Process_Result.RC.merge(results.map(p => p._1.rc))
       if (rc != Process_Result.RC.ok && exit_code) sys.exit(rc)
     }
   }