Add resourcesProvider flag to BuildServerCapabilities in BSP contra

This commit is contained in:
Samuel CLARENC 2021-06-17 13:55:45 +02:00
parent a0e3d89855
commit f3ec202a06
5 changed files with 21 additions and 10 deletions

View File

@ -42,6 +42,7 @@ object BuildServerProtocol {
TestProvider(BuildServerConnection.languages), TestProvider(BuildServerConnection.languages),
RunProvider(BuildServerConnection.languages), RunProvider(BuildServerConnection.languages),
dependencySourcesProvider = true, dependencySourcesProvider = true,
resourcesProvider = true,
canReload = true canReload = true
) )

View File

@ -16,22 +16,23 @@ final class BuildServerCapabilities private (
val testProvider: Option[sbt.internal.bsp.TestProvider], val testProvider: Option[sbt.internal.bsp.TestProvider],
val runProvider: Option[sbt.internal.bsp.RunProvider], val runProvider: Option[sbt.internal.bsp.RunProvider],
val dependencySourcesProvider: Option[Boolean], val dependencySourcesProvider: Option[Boolean],
val resourcesProvider: Option[Boolean],
val canReload: Option[Boolean]) extends Serializable { val canReload: Option[Boolean]) extends Serializable {
override def equals(o: Any): Boolean = this.eq(o.asInstanceOf[AnyRef]) || (o match { override def equals(o: Any): Boolean = this.eq(o.asInstanceOf[AnyRef]) || (o match {
case x: BuildServerCapabilities => (this.compileProvider == x.compileProvider) && (this.testProvider == x.testProvider) && (this.runProvider == x.runProvider) && (this.dependencySourcesProvider == x.dependencySourcesProvider) && (this.canReload == x.canReload) case x: BuildServerCapabilities => (this.compileProvider == x.compileProvider) && (this.testProvider == x.testProvider) && (this.runProvider == x.runProvider) && (this.dependencySourcesProvider == x.dependencySourcesProvider) && (this.resourcesProvider == x.resourcesProvider) && (this.canReload == x.canReload)
case _ => false case _ => false
}) })
override def hashCode: Int = { override def hashCode: Int = {
37 * (37 * (37 * (37 * (37 * (37 * (17 + "sbt.internal.bsp.BuildServerCapabilities".##) + compileProvider.##) + testProvider.##) + runProvider.##) + dependencySourcesProvider.##) + canReload.##) 37 * (37 * (37 * (37 * (37 * (37 * (37 * (17 + "sbt.internal.bsp.BuildServerCapabilities".##) + compileProvider.##) + testProvider.##) + runProvider.##) + dependencySourcesProvider.##) + resourcesProvider.##) + canReload.##)
} }
override def toString: String = { override def toString: String = {
"BuildServerCapabilities(" + compileProvider + ", " + testProvider + ", " + runProvider + ", " + dependencySourcesProvider + ", " + canReload + ")" "BuildServerCapabilities(" + compileProvider + ", " + testProvider + ", " + runProvider + ", " + dependencySourcesProvider + ", " + resourcesProvider + ", " + canReload + ")"
} }
private[this] def copy(compileProvider: Option[sbt.internal.bsp.CompileProvider] = compileProvider, testProvider: Option[sbt.internal.bsp.TestProvider] = testProvider, runProvider: Option[sbt.internal.bsp.RunProvider] = runProvider, dependencySourcesProvider: Option[Boolean] = dependencySourcesProvider, canReload: Option[Boolean] = canReload): BuildServerCapabilities = { private[this] def copy(compileProvider: Option[sbt.internal.bsp.CompileProvider] = compileProvider, testProvider: Option[sbt.internal.bsp.TestProvider] = testProvider, runProvider: Option[sbt.internal.bsp.RunProvider] = runProvider, dependencySourcesProvider: Option[Boolean] = dependencySourcesProvider, resourcesProvider: Option[Boolean] = resourcesProvider, canReload: Option[Boolean] = canReload): BuildServerCapabilities = {
new BuildServerCapabilities(compileProvider, testProvider, runProvider, dependencySourcesProvider, canReload) new BuildServerCapabilities(compileProvider, testProvider, runProvider, dependencySourcesProvider, resourcesProvider, canReload)
} }
def withCompileProvider(compileProvider: Option[sbt.internal.bsp.CompileProvider]): BuildServerCapabilities = { def withCompileProvider(compileProvider: Option[sbt.internal.bsp.CompileProvider]): BuildServerCapabilities = {
copy(compileProvider = compileProvider) copy(compileProvider = compileProvider)
@ -57,6 +58,12 @@ final class BuildServerCapabilities private (
def withDependencySourcesProvider(dependencySourcesProvider: Boolean): BuildServerCapabilities = { def withDependencySourcesProvider(dependencySourcesProvider: Boolean): BuildServerCapabilities = {
copy(dependencySourcesProvider = Option(dependencySourcesProvider)) copy(dependencySourcesProvider = Option(dependencySourcesProvider))
} }
def withResourcesProvider(resourcesProvider: Option[Boolean]): BuildServerCapabilities = {
copy(resourcesProvider = resourcesProvider)
}
def withResourcesProvider(resourcesProvider: Boolean): BuildServerCapabilities = {
copy(resourcesProvider = Option(resourcesProvider))
}
def withCanReload(canReload: Option[Boolean]): BuildServerCapabilities = { def withCanReload(canReload: Option[Boolean]): BuildServerCapabilities = {
copy(canReload = canReload) copy(canReload = canReload)
} }
@ -66,6 +73,6 @@ final class BuildServerCapabilities private (
} }
object BuildServerCapabilities { object BuildServerCapabilities {
def apply(compileProvider: Option[sbt.internal.bsp.CompileProvider], testProvider: Option[sbt.internal.bsp.TestProvider], runProvider: Option[sbt.internal.bsp.RunProvider], dependencySourcesProvider: Option[Boolean], canReload: Option[Boolean]): BuildServerCapabilities = new BuildServerCapabilities(compileProvider, testProvider, runProvider, dependencySourcesProvider, canReload) def apply(compileProvider: Option[sbt.internal.bsp.CompileProvider], testProvider: Option[sbt.internal.bsp.TestProvider], runProvider: Option[sbt.internal.bsp.RunProvider], dependencySourcesProvider: Option[Boolean], resourcesProvider: Option[Boolean], canReload: Option[Boolean]): BuildServerCapabilities = new BuildServerCapabilities(compileProvider, testProvider, runProvider, dependencySourcesProvider, resourcesProvider, canReload)
def apply(compileProvider: sbt.internal.bsp.CompileProvider, testProvider: sbt.internal.bsp.TestProvider, runProvider: sbt.internal.bsp.RunProvider, dependencySourcesProvider: Boolean, canReload: Boolean): BuildServerCapabilities = new BuildServerCapabilities(Option(compileProvider), Option(testProvider), Option(runProvider), Option(dependencySourcesProvider), Option(canReload)) def apply(compileProvider: sbt.internal.bsp.CompileProvider, testProvider: sbt.internal.bsp.TestProvider, runProvider: sbt.internal.bsp.RunProvider, dependencySourcesProvider: Boolean, resourcesProvider: Boolean, canReload: Boolean): BuildServerCapabilities = new BuildServerCapabilities(Option(compileProvider), Option(testProvider), Option(runProvider), Option(dependencySourcesProvider), Option(resourcesProvider), Option(canReload))
} }

View File

@ -15,9 +15,10 @@ implicit lazy val BuildServerCapabilitiesFormat: JsonFormat[sbt.internal.bsp.Bui
val testProvider = unbuilder.readField[Option[sbt.internal.bsp.TestProvider]]("testProvider") val testProvider = unbuilder.readField[Option[sbt.internal.bsp.TestProvider]]("testProvider")
val runProvider = unbuilder.readField[Option[sbt.internal.bsp.RunProvider]]("runProvider") val runProvider = unbuilder.readField[Option[sbt.internal.bsp.RunProvider]]("runProvider")
val dependencySourcesProvider = unbuilder.readField[Option[Boolean]]("dependencySourcesProvider") val dependencySourcesProvider = unbuilder.readField[Option[Boolean]]("dependencySourcesProvider")
val resourcesProvider = unbuilder.readField[Option[Boolean]]("resourcesProvider")
val canReload = unbuilder.readField[Option[Boolean]]("canReload") val canReload = unbuilder.readField[Option[Boolean]]("canReload")
unbuilder.endObject() unbuilder.endObject()
sbt.internal.bsp.BuildServerCapabilities(compileProvider, testProvider, runProvider, dependencySourcesProvider, canReload) sbt.internal.bsp.BuildServerCapabilities(compileProvider, testProvider, runProvider, dependencySourcesProvider, resourcesProvider, canReload)
case None => case None =>
deserializationError("Expected JsObject but found None") deserializationError("Expected JsObject but found None")
} }
@ -28,6 +29,7 @@ implicit lazy val BuildServerCapabilitiesFormat: JsonFormat[sbt.internal.bsp.Bui
builder.addField("testProvider", obj.testProvider) builder.addField("testProvider", obj.testProvider)
builder.addField("runProvider", obj.runProvider) builder.addField("runProvider", obj.runProvider)
builder.addField("dependencySourcesProvider", obj.dependencySourcesProvider) builder.addField("dependencySourcesProvider", obj.dependencySourcesProvider)
builder.addField("resourcesProvider", obj.resourcesProvider)
builder.addField("canReload", obj.canReload) builder.addField("canReload", obj.canReload)
builder.endObject() builder.endObject()
} }

View File

@ -200,7 +200,7 @@ type BuildServerCapabilities {
# The server provides all the resource dependencies # The server provides all the resource dependencies
# via method buildTarget/resources # via method buildTarget/resources
# resourcesProvider: Boolean resourcesProvider: Boolean
## Reloading the workspace state through workspace/reload is supported ## Reloading the workspace state through workspace/reload is supported
canReload: Boolean canReload: Boolean

View File

@ -16,7 +16,8 @@ object BuildServerTest extends AbstractServerTest {
test("build/initialize") { _ => test("build/initialize") { _ =>
initializeRequest() initializeRequest()
assert(svr.waitForString(10.seconds) { s => assert(svr.waitForString(10.seconds) { s =>
s contains """"id":"10"""" (s contains """"id":"10"""") &&
(s contains """"resourcesProvider":true""")
}) })
} }