diff --git a/main/src/main/scala/sbt/internal/server/BuildServerProtocol.scala b/main/src/main/scala/sbt/internal/server/BuildServerProtocol.scala index 956061da2..4065d760c 100644 --- a/main/src/main/scala/sbt/internal/server/BuildServerProtocol.scala +++ b/main/src/main/scala/sbt/internal/server/BuildServerProtocol.scala @@ -28,7 +28,7 @@ import sbt.util.Logger import sjsonnew.shaded.scalajson.ast.unsafe.{ JNull, JValue } import sjsonnew.support.scalajson.unsafe.{ CompactPrinter, Converter, Parser => JsonParser } -import scala.util.{ Failure, Success } +import scala.util.{ Failure, Success, Try } import scala.util.control.NonFatal object BuildServerProtocol { @@ -431,12 +431,15 @@ object BuildServerProtocol { } } - private val jsonParser: Parser[JValue] = (Parsers.any *) + private val jsonParser: Parser[Try[JValue]] = (Parsers.any *) .map(_.mkString) - .map(JsonParser.parseUnsafe) + .map(JsonParser.parseFromString) private def bspRunTask: Def.Initialize[InputTask[Unit]] = Def.inputTaskDyn { - val runParams = jsonParser.map(json => Converter.fromJson[RunParams](json).get).parsed + val runParams = jsonParser + .map(_.flatMap(json => Converter.fromJson[RunParams](json))) + .parsed + .get val defaultClass = Keys.mainClass.value val defaultJvmOptions = Keys.javaOptions.value diff --git a/server-test/src/test/scala/testpkg/ServerCompletionsTest.scala b/server-test/src/test/scala/testpkg/ServerCompletionsTest.scala index 4639b0a12..30701f58d 100644 --- a/server-test/src/test/scala/testpkg/ServerCompletionsTest.scala +++ b/server-test/src/test/scala/testpkg/ServerCompletionsTest.scala @@ -19,6 +19,7 @@ object ServerCompletionsTest extends AbstractServerTest { s"""{ "jsonrpc": "2.0", "id": 15, "method": "sbt/completion", "params": $completionStr }""" ) assert(svr.waitForString(10.seconds) { s => + println(s) s contains """"result":{"items":[""" }) }