Skip to content

Commit 8a0e528

Browse files
Gedochaolwronski
andauthored
Support jvmRunEnvironment and jvmTestEnvironment for BSP (#1519)
* Support `jvmRunEnvironment` and `jvmTestEnvironment` for BSP * Support jvmRunEnvironment and jvmTestEnvironment for BSP logging and proxy Co-authored-by: Łukasz Wroński <[email protected]>
1 parent 5d40ded commit 8a0e528

File tree

8 files changed

+71
-10
lines changed

8 files changed

+71
-10
lines changed

modules/bloop-rifle/src/main/scala/scala/build/bloop/BuildServer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ package scala.build.bloop
22

33
import ch.epfl.scala.bsp4j
44

5-
trait BuildServer extends bsp4j.BuildServer with bsp4j.ScalaBuildServer with bsp4j.JavaBuildServer
5+
trait BuildServer extends bsp4j.BuildServer with bsp4j.ScalaBuildServer with bsp4j.JavaBuildServer with bsp4j.JvmBuildServer

modules/build/src/main/scala/scala/build/bsp/BspImpl.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -423,15 +423,16 @@ final class BspImpl(
423423
val currentBloopSession = newBloopSession(initialInputs, reloadableOptions)
424424
bloopSession.update(null, currentBloopSession, "BSP server already initialized")
425425

426-
val actualLocalServer: b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer
427-
with ScalaScriptBuildServer with HasGeneratedSources =
426+
val actualLocalServer
427+
: b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer with b.JvmBuildServer
428+
with ScalaScriptBuildServer with HasGeneratedSources =
428429
new BuildServerProxy(
429430
() => bloopSession.get().bspServer,
430431
() => onReload()
431432
)
432433

433-
val localServer
434-
: b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer with ScalaScriptBuildServer =
434+
val localServer: b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer
435+
with b.JvmBuildServer with ScalaScriptBuildServer =
435436
if (verbosity >= 3)
436437
new LoggingBuildServerAll(actualLocalServer)
437438
else

modules/build/src/main/scala/scala/build/bsp/BspServer.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ import scala.jdk.CollectionConverters.*
1616
import scala.util.Random
1717

1818
class BspServer(
19-
bloopServer: b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer,
19+
bloopServer: b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer & b.JvmBuildServer,
2020
compile: (() => CompletableFuture[b.CompileResult]) => CompletableFuture[b.CompileResult],
2121
logger: Logger,
2222
presetIntelliJ: Boolean = false
2323
) extends b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer with BuildServerForwardStubs
2424
with ScalaScriptBuildServer
25-
with ScalaBuildServerForwardStubs with JavaBuildServerForwardStubs
25+
with ScalaBuildServerForwardStubs
26+
with JavaBuildServerForwardStubs
27+
with JvmBuildServerForwardStubs
2628
with HasGeneratedSourcesImpl {
2729

2830
private var client: Option[BuildClient] = None
@@ -132,7 +134,8 @@ class BspServer(
132134
}
133135
}
134136

135-
protected def forwardTo: b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer = bloopServer
137+
protected def forwardTo
138+
: b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer & b.JvmBuildServer = bloopServer
136139

137140
private val supportedLanguages: ju.List[String] = List(
138141
"scala",

modules/build/src/main/scala/scala/build/bsp/BuildServerProxy.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import scala.build.{GeneratedSource, Inputs}
1010
class BuildServerProxy(
1111
bspServer: () => BspServer,
1212
onReload: () => CompletableFuture[Object]
13-
) extends b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer
13+
) extends b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer with b.JvmBuildServer
1414
with ScalaScriptBuildServer with HasGeneratedSources {
1515
override def buildInitialize(params: b.InitializeBuildParams)
1616
: CompletableFuture[b.InitializeBuildResult] = bspServer().buildInitialize(params)
@@ -82,6 +82,14 @@ class BuildServerProxy(
8282
override def onConnectWithClient(server: b.BuildClient): Unit =
8383
bspServer().onConnectWithClient(server)
8484

85+
override def jvmRunEnvironment(params: b.JvmRunEnvironmentParams)
86+
: CompletableFuture[b.JvmRunEnvironmentResult] =
87+
bspServer().jvmRunEnvironment(params)
88+
89+
override def jvmTestEnvironment(params: b.JvmTestEnvironmentParams)
90+
: CompletableFuture[b.JvmTestEnvironmentResult] =
91+
bspServer().jvmTestEnvironment(params)
92+
8593
def targetIds: List[b.BuildTargetIdentifier] = bspServer().targetIds
8694
def targetScopeIdOpt(scope: Scope): Option[b.BuildTargetIdentifier] =
8795
bspServer().targetScopeIdOpt(scope)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package scala.build.bsp
2+
3+
import ch.epfl.scala.bsp4j as b
4+
5+
import java.util.concurrent.CompletableFuture
6+
7+
trait JvmBuildServerForwardStubs extends b.JvmBuildServer {
8+
protected def forwardTo: b.JvmBuildServer
9+
10+
override def jvmRunEnvironment(params: b.JvmRunEnvironmentParams)
11+
: CompletableFuture[b.JvmRunEnvironmentResult] =
12+
forwardTo.jvmRunEnvironment(params)
13+
14+
override def jvmTestEnvironment(params: b.JvmTestEnvironmentParams)
15+
: CompletableFuture[b.JvmTestEnvironmentResult] =
16+
forwardTo.jvmTestEnvironment(params)
17+
}

modules/build/src/main/scala/scala/build/bsp/LoggingBuildServerAll.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import ch.epfl.scala.{bsp4j => b}
55
import java.util.concurrent.CompletableFuture
66

77
class LoggingBuildServerAll(
8-
val underlying: b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer
8+
val underlying: b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer with b.JvmBuildServer
99
with ScalaScriptBuildServer
1010
) extends LoggingBuildServer with LoggingScalaBuildServer with LoggingJavaBuildServer
11+
with LoggingJvmBuildServer
1112
with ScalaScriptBuildServer {
1213

1314
def buildTargetWrappedSources(params: WrappedSourcesParams)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package scala.build.bsp
2+
3+
import ch.epfl.scala.bsp4j as b
4+
5+
import java.util.concurrent.CompletableFuture
6+
7+
trait LoggingJvmBuildServer extends b.JvmBuildServer {
8+
protected def underlying: b.JvmBuildServer
9+
10+
override def jvmRunEnvironment(params: b.JvmRunEnvironmentParams)
11+
: CompletableFuture[b.JvmRunEnvironmentResult] =
12+
underlying.jvmRunEnvironment(pprint.err.log(params)).logF
13+
14+
override def jvmTestEnvironment(params: b.JvmTestEnvironmentParams)
15+
: CompletableFuture[b.JvmTestEnvironmentResult] =
16+
underlying.jvmTestEnvironment(pprint.err.log(params)).logF
17+
}

modules/cli/src/main/resources/META-INF/native-image/org.virtuslab/scala-cli-core/reflect-config.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,6 +1018,13 @@
10181018
"allDeclaredMethods": true,
10191019
"allDeclaredFields": true
10201020
},
1021+
{
1022+
"name": "scala.build.bsp.JvmBuildServerForwardStubs",
1023+
"allDeclaredConstructors": true,
1024+
"allPublicConstructors": true,
1025+
"allDeclaredMethods": true,
1026+
"allDeclaredFields": true
1027+
},
10211028
{
10221029
"name": "scala.build.bsp.LoggingBuildClient",
10231030
"allDeclaredConstructors": true,
@@ -1046,6 +1053,13 @@
10461053
"allDeclaredMethods": true,
10471054
"allDeclaredFields": true
10481055
},
1056+
{
1057+
"name": "scala.build.bsp.LoggingJvmBuildServer",
1058+
"allDeclaredConstructors": true,
1059+
"allPublicConstructors": true,
1060+
"allDeclaredMethods": true,
1061+
"allDeclaredFields": true
1062+
},
10491063
{
10501064
"name": "scala.build.bsp.LoggingScalaBuildServer",
10511065
"allDeclaredConstructors": true,

0 commit comments

Comments
 (0)