diff options
author | Alexandra Dima <alexandra.dima@jetbrains.com> | 2019-07-23 17:56:38 +0200 |
---|---|---|
committer | Samvel Abrahamyan <samvel1024@gmail.com> | 2019-10-12 14:33:09 +0200 |
commit | f0bcc011d7592db9b6e2fc19648c8fb3c7dd3c9d (patch) | |
tree | a737453d275f633ff38d9b7bb6659e213632f711 /contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala | |
parent | 5ea90651ba6be7c3ea86f1d3123fa6af5b2f9ca8 (diff) | |
download | mill-f0bcc011d7592db9b6e2fc19648c8fb3c7dd3c9d.tar.gz mill-f0bcc011d7592db9b6e2fc19648c8fb3c7dd3c9d.tar.bz2 mill-f0bcc011d7592db9b6e2fc19648c8fb3c7dd3c9d.zip |
Addressed code review feedback.
Diffstat (limited to 'contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala')
-rw-r--r-- | contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala b/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala index e5319b77..b5ebf83e 100644 --- a/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala +++ b/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala @@ -1,11 +1,11 @@ package mill.contrib.bsp + import java.io.File import sbt.testing._ -import java.util.{Calendar, Collections} +import java.util.Collections import java.util.concurrent.CompletableFuture -import scala.compat.java8.OptionConverters._ import mill.scalalib.Lib.discoverTests import ch.epfl.scala.bsp4j._ import mill.{scalalib, _} @@ -13,19 +13,13 @@ import mill.api.{BspContext, Loose, Result, Strict} import mill.contrib.bsp.ModuleUtils._ import mill.eval.Evaluator import mill.scalalib._ -import mill.scalalib.api.{CompilationResult, ZincWorkerApi} +import mill.scalalib.api.CompilationResult import sbt.internal.inc._ -import xsbti.{Position, Problem, Severity} -import xsbti.compile.{AnalysisContents, AnalysisStore, FileAnalysisStore} -import xsbti.compile.analysis.SourceInfo -import mill.api.Result.{Failing, Failure, Success} import scala.collection.JavaConverters._ import mill.modules.Jvm -import mill.util.{Ctx, PrintLogger} -import mill.define.{Discover, ExternalModule, Target, Task} -import org.eclipse.lsp4j.InitializeError -import org.eclipse.lsp4j.jsonrpc.messages.{ResponseError, ResponseErrorCode} +import mill.util.Ctx +import mill.define.{Discover, ExternalModule} import sbt.internal.util.{ConsoleOut, MainAppender, ManagedLogger} import sbt.util.LogExchange @@ -43,7 +37,7 @@ class MillBuildServer(evaluator: Evaluator, val supportedLanguages: List[String] = languages val millServerVersion: String = serverVersion var cancelator: () => Unit = () => () - var millEvaluator: Evaluator = evaluator + val millEvaluator: Evaluator = evaluator var rootModule: JavaModule = ModuleUtils.getRootJavaModule(evaluator.rootModule) var millModules: Seq[JavaModule] = getMillModules(millEvaluator) var client: BuildClient = _ @@ -55,7 +49,7 @@ class MillBuildServer(evaluator: Evaluator, var moduleToTarget: Predef.Map[JavaModule, BuildTarget] = ModuleUtils.millModulesToBspTargets(millModules, rootModule, evaluator, List("scala", "java")) var moduleCodeToTargetId: Predef.Map[Int, BuildTargetIdentifier] = - for ( (targetId, module) <- targetIdToModule ) yield (targetId, module.hashCode()).swap + for ( (targetId, module) <- targetIdToModule ) yield (module.hashCode(), targetId) var initialized = false var clientInitialized = false @@ -156,15 +150,12 @@ class MillBuildServer(evaluator: Evaluator, def getInverseSourcesResult: InverseSourcesResult = { val textDocument = inverseSourcesParams.getTextDocument - - val targets = (for (targetId <- targetIdToModule.keys - if buildTargetSources(new SourcesParams(Collections.singletonList(targetId))). - get.getItems.asScala.head.getSources.asScala. - exists( - item => os.list(os.Path(item.getUri)). - map(dir => dir.toIO.toURI.toString).contains(textDocument.getUri))) - yield targetId).toList.asJava - new InverseSourcesResult(targets) + val targets = millModules.filter(m => ModuleUtils.evaluateInformativeTask( + millEvaluator, m.allSourceFiles, Seq.empty[PathRef]). + map(pathRef => pathRef.path.toIO.toURI.toString). + contains(textDocument.getUri)). + map(m => moduleToTargetId(m)) + new InverseSourcesResult(targets.asJava) } handleExceptions[String, InverseSourcesResult]((in) => getInverseSourcesResult, "") } @@ -313,7 +304,7 @@ class MillBuildServer(evaluator: Evaluator, } private[this] def getStatusCode(results: Evaluator.Results): StatusCode = { - System.err.println("Results: " + results.rawValues) + if (results.failing.keyCount > 0) { StatusCode.ERROR } @@ -340,7 +331,6 @@ class MillBuildServer(evaluator: Evaluator, val module = targetIdToModule(targetId) module match { case m: TestModule => val testModule = m.asInstanceOf[TestModule] - println("Arguments: " + argsMap(targetId)) val testTask = testModule.testLocal(argsMap(targetId):_*) // notifying the client that the testing of this build target started @@ -356,8 +346,6 @@ class MillBuildServer(evaluator: Evaluator, new TaskId(testTask.hashCode().toString), Seq.empty[String]) - println("BspContext: " + bspContext) - val results = millEvaluator.evaluate( Strict.Agg(testTask), getBspLoggedReporterPool(params, (t) => s"Started compiling target: $t", |