diff --git a/modules/build/src/main/scala/scala/build/compiler/SimpleScalaCompiler.scala b/modules/build/src/main/scala/scala/build/compiler/SimpleScalaCompiler.scala index c18719796d..963cb80d5c 100644 --- a/modules/build/src/main/scala/scala/build/compiler/SimpleScalaCompiler.scala +++ b/modules/build/src/main/scala/scala/build/compiler/SimpleScalaCompiler.scala @@ -98,6 +98,9 @@ final case class SimpleScalaCompiler( javaHomeOpt.map(SimpleJavaCompiler.javaCommand(_)).getOrElse(defaultJavaCommand) val javaOptions = defaultJavaOptions ++ + scalacOptions + .filter(_.startsWith("-J")) + .map(_.stripPrefix("-J")) ++ javacOptions .filter(_.startsWith("-J")) .map(_.stripPrefix("-J")) diff --git a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala index bbba3067e5..715f7b88ee 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala @@ -744,4 +744,33 @@ abstract class CompileTestDefinitions(val scalaVersionOpt: Option[String]) expect(!secondOutput.contains("Compiled project")) } } + + test("pass java options to scalac when server=false") { + val inputs = TestInputs( + os.rel / "Main.scala" -> + """object Main extends App { + | println("Hello") + |} + |""".stripMargin + ) + inputs.fromRoot { root => + val res = os.proc( + TestUtil.cli, + "compile", + "--scalac-option=-J-XX:MaxHeapSize=1k", + "--server=false", + extraOptions, + "." + ) + .call(cwd = root, check = false, mergeErrIntoOut = true) + expect(res.exitCode == 1) + assertNoDiff( + res.out.text(), + """Error occurred during initialization of VM + |Too small maximum heap + |Compilation failed + |""".stripMargin + ) + } + } }