minor performance tuning;
authorwenzelm
Mon, 15 Sep 2025 18:09:55 +0200
changeset 83157 dc54c60492c3
parent 83156 6bc5835bc794
child 83158 7e94f31b6d6c
minor performance tuning;
src/Pure/PIDE/command.scala
src/Pure/PIDE/document_status.scala
--- a/src/Pure/PIDE/command.scala	Mon Sep 15 17:42:09 2025 +0200
+++ b/src/Pure/PIDE/command.scala	Mon Sep 15 18:09:55 2025 +0200
@@ -57,6 +57,9 @@
     def get(serial: Long): Option[XML.Elem] = rep.get(serial)
     def iterator: Iterator[Results.Entry] = rep.iterator
 
+    lazy val warned: Boolean = rep.exists(p => Protocol.is_warning(p._2) || Protocol.is_legacy(p._2))
+    lazy val failed: Boolean = rep.exists(p => Protocol.is_error(p._2))
+
     def + (entry: Results.Entry): Results =
       if (defined(entry._1)) this
       else new Results(rep + entry)
@@ -230,17 +233,9 @@
       touched && forks == 0 && runs == 0
     }
 
-    lazy val document_status: Document_Status.Command_Status = {
-      val warnings =
-        if (results.iterator.exists(p => Protocol.is_warning(p._2) || Protocol.is_legacy(p._2)))
-          List(Markup(Markup.WARNING, Nil))
-        else Nil
-      val errors =
-        if (results.iterator.exists(p => Protocol.is_error(p._2)))
-          List(Markup(Markup.ERROR, Nil))
-        else Nil
-      Document_Status.Command_Status.make(warnings ::: errors ::: status)
-    }
+    lazy val document_status: Document_Status.Command_Status =
+      Document_Status.Command_Status.make(
+        status, warned = results.warned, failed = results.failed)
 
     def markup(index: Markup_Index): Markup_Tree = markups(index)
 
--- a/src/Pure/PIDE/document_status.scala	Mon Sep 15 17:42:09 2025 +0200
+++ b/src/Pure/PIDE/document_status.scala	Mon Sep 15 18:09:55 2025 +0200
@@ -18,11 +18,15 @@
     val liberal_elements: Markup.Elements =
       proper_elements + Markup.WARNING + Markup.LEGACY + Markup.ERROR
 
-    def make(markups: Iterable[Markup]): Command_Status = {
+    def make(
+      markups: Iterable[Markup],
+      warned: Boolean = false,
+      failed: Boolean = false
+    ): Command_Status = {
       var touched = false
       var accepted = false
-      var warned = false
-      var failed = false
+      var warned1 = warned
+      var failed1 = failed
       var canceled = false
       var finalized = false
       var forks = 0
@@ -34,8 +38,8 @@
           case Markup.JOINED => forks -= 1
           case Markup.RUNNING => touched = true; runs += 1
           case Markup.FINISHED => runs -= 1
-          case Markup.WARNING | Markup.LEGACY => warned = true
-          case Markup.FAILED | Markup.ERROR => failed = true
+          case Markup.WARNING | Markup.LEGACY => warned1 = true
+          case Markup.FAILED | Markup.ERROR => failed1 = true
           case Markup.CANCELED => canceled = true
           case Markup.FINALIZED => finalized = true
           case _ =>
@@ -44,8 +48,8 @@
       new Command_Status(
         touched = touched,
         accepted = accepted,
-        warned = warned,
-        failed = failed,
+        warned = warned1,
+        failed = failed1,
         canceled = canceled,
         finalized = finalized,
         forks = forks,