Skip to content

Commit

Permalink
Merge pull request #2104 from tgodzik/fix-dedup
Browse files Browse the repository at this point in the history
bugfix: Don't deduplicate all options when using Metals
  • Loading branch information
tgodzik authored Jul 6, 2023
2 parents 57843c0 + f23a861 commit b870185
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
6 changes: 3 additions & 3 deletions frontend/src/main/scala/bloop/data/Project.scala
Original file line number Diff line number Diff line change
Expand Up @@ -454,10 +454,10 @@ object Project {
// engine so that semanticdb files are replicated in those directories
val hasSemanticDB = hasScalaSemanticDBEnabledInCompilerOptions(options)
val pluginOption = if (hasSemanticDB) Nil else List(s"-Xplugin:$pluginPath")
val baseOptions = s"-P:semanticdb:sourceroot:$workspaceDir" :: options.filterNot(
isScalaSemanticdbSourceRoot
val baseOptions = s"-P:semanticdb:sourceroot:$workspaceDir" :: options.filterNot(opt =>
isScalaSemanticdbSourceRoot(opt) || baseSemanticdbOptions.contains(opt)
)
(baseOptions ++ baseSemanticdbOptions ++ pluginOption).distinct
baseOptions ++ baseSemanticdbOptions ++ pluginOption
}

def enableDottySemanticdb(options: List[String]) = {
Expand Down
36 changes: 35 additions & 1 deletion frontend/src/test/scala/bloop/bsp/BspMetalsClientSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,14 @@ class BspMetalsClientSpec(
)

val scalacOptions = state.scalaOptions(`A`)._2.items.head.options
assert(scalacOptions == correctSourceRootOption :: defaultScalacOptions.drop(1))
val expectedScalacOptions = correctSourceRootOption :: List(
"-Xplugin:path-to-plugin/semanticdb-scalac_2.12.18-4.7.8.jar",
"-Yrangepos",
"-P:semanticdb:failures:warning",
"-P:semanticdb:synthetics:on",
"-Xplugin-require:semanticdb"
)
assert(scalacOptions == expectedScalacOptions)
}
}
}
Expand Down Expand Up @@ -469,6 +476,33 @@ class BspMetalsClientSpec(
}
}

test("save-compile-semanticDB-many-options") {
TestUtil.withinWorkspace { workspace =>
val `A` = TestProject(
workspace,
"A",
dummyFooScalaAndBarJavaSources,
scalacOptions = List("-release", "8", "-Ybackend-parallelism", "8")
)
val projects = List(`A`)
TestProject.populateWorkspace(workspace, projects)
val logger = new RecordingLogger(ansiCodesSupported = false)
val extraParams = BloopExtraBuildParams(
ownsBuildFiles = None,
clientClassesRootDir = None,
semanticdbVersion = Some(semanticdbVersion),
supportedScalaVersions = Some(List(testedScalaVersion)),
javaSemanticdbVersion = Some(javaSemanticdbVersion)
)
loadBspState(workspace, projects, logger, "Metals", bloopExtraParams = extraParams) { state =>
val compiledState = state.compile(`A`).toTestState
assert(compiledState.status == ExitStatus.Ok)
assertSemanticdbFileFor("Foo.scala", compiledState)
assertSemanticdbFileFor("Bar.java", compiledState)
}
}
}

test("compile is successful with semanticDB and javac processorpath") {
TestUtil.withinWorkspace { workspace =>
val logger = new RecordingLogger(ansiCodesSupported = false)
Expand Down

0 comments on commit b870185

Please sign in to comment.