Skip to content

Commit

Permalink
don't add --release flag for bloop when javac 8
Browse files Browse the repository at this point in the history
  • Loading branch information
kasiaMarek committed Jun 27, 2024
1 parent a41d28a commit 1d9825f
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 115 deletions.
8 changes: 6 additions & 2 deletions modules/build/src/main/scala/scala/build/Build.scala
Original file line number Diff line number Diff line change
Expand Up @@ -857,7 +857,8 @@ object Build {
val semanticDbSourceRoot =
options.scalaOptions.semanticDbOptions.semanticDbSourceRoot.getOrElse(inputs.workspace)

val releaseFlagVersion = releaseFlag(options, compilerJvmVersionOpt, logger).map(_.toString)
val releaseFlagVersion =
releaseFlag(options, compilerJvmVersionOpt, logger).map(_.toString)

val scalaCompilerParamsOpt = artifacts.scalaOpt match {
case Some(scalaArtifacts) =>
Expand Down Expand Up @@ -966,7 +967,10 @@ object Build {
else
Nil

val javacReleaseV = releaseFlagVersion.map(v => List("--release", v)).getOrElse(Nil)
def bspServer = options.useBuildServer.getOrElse(true)
val javacReleaseV = releaseFlagVersion.filterNot { version =>
version.toIntOption.exists(_ <= 8) && bspServer
}.map(v => List("--release", v)).getOrElse(Nil)

javacReleaseV ++ semanticDbJavacOptions ++ options.javaOptions.javacOptions.map(_.value)
}
Expand Down
6 changes: 2 additions & 4 deletions modules/build/src/main/scala/scala/build/Project.scala
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,8 @@ final case class Project(
val platform = (scalaJsOptions, scalaNativeOptions) match {
case (None, None) =>
val baseJvmConf = bloopJvmPlatform
baseJvmConf.copy(
config =
baseJvmConf.config.copy(home = javaHomeOpt.map(_.toNIO).orElse(baseJvmConf.config.home))
)
val home = javaHomeOpt.map(_.toNIO).orElse(baseJvmConf.config.home)
baseJvmConf.copy(config = baseJvmConf.config.copy(home = home))
case (Some(jsConfig), _) => BloopConfig.Platform.Js(config = jsConfig, mainClass = None)
case (_, Some(nativeConfig)) =>
BloopConfig.Platform.Native(config = nativeConfig, mainClass = None)
Expand Down
109 changes: 0 additions & 109 deletions modules/build/src/test/scala/scala/build/tests/BuildProjectTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -65,108 +65,6 @@ class BuildProjectTests extends TestUtil.ScalaCliBuildSuite {
override def flushExperimentalWarnings: Unit = ???
}

val bloopJavaPath = Position.Bloop("/home/empty/jvm/8/")

def testJvmReleaseIsSetCorrectly(
javaHome: String,
bloopJvmVersion: Option[Int],
scalacOptions: Seq[String] = Nil
) = {
val options = BuildOptions(
internal = InternalOptions(localRepository =
LocalRepo.localRepo(scala.build.Directories.default().localRepoDir)
),
javaOptions = JavaOptions(
javaHomeOpt = Some(Positioned.none(os.Path(javaHome)))
),
scalaOptions = ScalaOptions(
scalacOptions = ShadowingSeq.from(
scalacOptions.map(ScalacOpt(_)).map(Positioned.commandLine(_))
)
)
)

val inputs = Inputs.empty("project")
val sources = Sources(Nil, Nil, None, Nil, options)
val logger = new LoggerMock()
val artifacts = options.artifacts(logger, Scope.Test).orThrow
val res = Build.buildProject(
inputs,
sources,
Nil,
options,
bloopJvmVersion.map(bv => Positioned(bloopJavaPath, bv)),
Scope.Test,
logger,
artifacts
)

val scalaCompilerOptions = res.fold(throw _, identity)
.scalaCompiler
.toSeq
.flatMap(_.scalacOptions)
(scalaCompilerOptions, res.fold(throw _, identity).javacOptions, logger.diagnostics)
}

def jvm(v: Int) = os.proc(TestUtil.cs, "java-home", "--jvm", s"zulu:$v").call().out.trim()

test("Compiler options contain target JVM release") {
val javaHome = jvm(8)
val bloopJvmVersion = 11
val (scalacOptions, javacOptions, diagnostics) =
testJvmReleaseIsSetCorrectly(javaHome, Some(bloopJvmVersion))
expect(scalacOptions.containsSlice(Seq("-release", "8")))
expect(javacOptions.containsSlice(Seq("--release", "8")))
expect(diagnostics.isEmpty)

}

test("Empty BuildOptions is actually empty 2 ") {
val javaHome = jvm(8)
val bloopJvmVersion = 8
val (scalacOptions, javacOptions, diagnostics) =
testJvmReleaseIsSetCorrectly(javaHome, Some(bloopJvmVersion))
expect(!scalacOptions.containsSlice(Seq("-release")))
expect(!javacOptions.containsSlice(Seq("--release")))
expect(diagnostics.isEmpty)
}

test("Empty BuildOptions is actually empty 2 ") {
val javaHome = jvm(11)
val bloopJvmVersion = 17
val (scalacOptions, javacOptions, diagnostics) =
testJvmReleaseIsSetCorrectly(javaHome, Some(bloopJvmVersion))
expect(scalacOptions.containsSlice(Seq("-release", "11")))
expect(javacOptions.containsSlice(Seq("--release", "11")))
expect(diagnostics.isEmpty)
}

lazy val expectedDiagnostic = Diagnostic(
Diagnostic.Messages.bloopTooOld,
Severity.Warning,
List(bloopJavaPath)
)

test("Compiler options contain target JVM release") {
val javaHome = jvm(17)
val bloopJvmVersion = 11
val (scalacOptions, javacOptions, diagnostics) =
testJvmReleaseIsSetCorrectly(javaHome, Some(bloopJvmVersion))
expect(!scalacOptions.containsSlice(Seq("-release")))
expect(!javacOptions.containsSlice(Seq("--release")))
expect(diagnostics == List(expectedDiagnostic))
}

test("Empty BuildOptions is actually empty 2 ") {
val javaHome = jvm(11)
val bloopJvmVersion = 8
val (scalacOptions, javacOptions, diagnostics) =
testJvmReleaseIsSetCorrectly(javaHome, Some(bloopJvmVersion), List("-release", "17"))
expect(scalacOptions.containsSlice(Seq("-release", "17")))
expect(!javacOptions.containsSlice(Seq("--release")))
expect(diagnostics == List(expectedDiagnostic))
}

test("workspace for bsp") {
val options = BuildOptions(
internal = InternalOptions(localRepository =
Expand All @@ -183,11 +81,4 @@ class BuildProjectTests extends TestUtil.ScalaCliBuildSuite {

expect(project.workspace == inputs.workspace)
}
test("skip passing release flag for java 8 for ScalaSimpleCompiler") {
val javaHome = jvm(8)
val bloopJvmVersion = 17
val (_, javacOptions, _) =
testJvmReleaseIsSetCorrectly(javaHome, bloopJvmVersion = None)
expect(!javacOptions.containsSlice(Seq("--release")))
}
}

0 comments on commit 1d9825f

Please sign in to comment.