From 8b8745cb0b51f17ee64fcba8583f271f0c97556a Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Thu, 17 Sep 2020 14:23:28 +0200 Subject: [PATCH] Fix completion --- .../sbt/internal/server/BuildServerProtocol.scala | 11 +++++++---- .../test/scala/testpkg/ServerCompletionsTest.scala | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) 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":[""" }) }