From 1e448bb40347df8a2166d98b84f5d06a6996c04e Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Sun, 20 Sep 2020 16:30:23 -0700 Subject: [PATCH] Don't stop watch input thread on bad input In a continuous build in sbt 1.4.0-RC1, if the user enters an invalid option, it causes the input thread to exit which means the watch would no longer accept input commands (including to exit). This fixes that behavior. --- main/src/main/scala/sbt/internal/Continuous.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/src/main/scala/sbt/internal/Continuous.scala b/main/src/main/scala/sbt/internal/Continuous.scala index 7aacae75f..bd8c4de9e 100644 --- a/main/src/main/scala/sbt/internal/Continuous.scala +++ b/main/src/main/scala/sbt/internal/Continuous.scala @@ -788,7 +788,7 @@ private[sbt] object Continuous extends DeprecatedContinuous { try { interrupted.set(false) terminal.inputStream.read match { - case -1 => Watch.Ignore + case -1 => throw new InterruptedException case 3 => Watch.CancelWatch // ctrl+c on windows case byte => inputHandler(byte.toChar.toString) } @@ -800,7 +800,7 @@ private[sbt] object Continuous extends DeprecatedContinuous { action match { case Watch.Ignore => val stop = interrupted.get || Thread.interrupted - if ((!Terminal.systemInIsAttached || alternative.isDefined) && !stop) impl() + if (!stop) impl() else None case r => Some(r) }