src/Pure/Tools/build.scala
changeset 71667 4d2de35214c5
parent 71652 721f143a679b
child 71668 25ef5c7287a7
--- a/src/Pure/Tools/build.scala	Thu Apr 02 13:04:24 2020 +0200
+++ b/src/Pure/Tools/build.scala	Thu Apr 02 20:06:43 2020 +0200
@@ -166,7 +166,6 @@
         }
         catch { case ERROR(err) => List(err) }
       build_session_errors.fulfill(errors)
-      session.send_stop()
       true
     }
 
@@ -297,8 +296,9 @@
               cwd = info.dir.file, env = env).await_startup
 
           session.protocol_command("build_session", args_yxml)
+          val errors = handler.build_session_errors.join
 
-          val process_result = process.join
+          val process_result = process.await_shutdown
           val process_output =
             stdout.toString :: messages.toList :::
             command_timings.toList.map(Protocol.Command_Timing_Marker.apply) :::
@@ -307,12 +307,11 @@
             task_statistics.toList.map(Protocol.Task_Statistics_Marker.apply)
 
           val result = process_result.output(process_output)
-          handler.build_session_errors.join match {
-            case Nil => result
-            case errors =>
-              result.error_rc.output(
-                errors.flatMap(s => split_lines(Output.error_message_text(s))) :::
-                errors.map(Protocol.Error_Message_Marker.apply))
+          if (errors.isEmpty) result
+          else {
+            result.error_rc.output(
+              errors.flatMap(s => split_lines(Output.error_message_text(s))) :::
+              errors.map(Protocol.Error_Message_Marker.apply))
           }
         }
         else {