From 2db4649ef6d8b06283536195419607a692512c63 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Fri, 12 Jan 2024 13:09:55 +0100 Subject: [PATCH] Add `-language:*` as a possible repeatable compiler option --- .../scala/cli/integration/SipScalaTests.scala | 19 +++++++++++++++++++ .../scala/scala/build/options/ScalacOpt.scala | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/integration/src/test/scala/scala/cli/integration/SipScalaTests.scala b/modules/integration/src/test/scala/scala/cli/integration/SipScalaTests.scala index 5c996791cc..1ad17a7f54 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/SipScalaTests.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/SipScalaTests.scala @@ -495,4 +495,23 @@ class SipScalaTests extends ScalaCliSuite { expect(res.exitCode == 0) } } + + test("consecutive -language:* flags are not ignored") { + val sourceFileName = "example.scala" + TestInputs(os.rel / sourceFileName -> + """//> using scala 3.3.1 + |//> using options -Yexplicit-nulls -language:fewerBraces -language:strictEquality + |def repro[A](as: List[A]): List[A] = + | as match + | case Nil => Nil + | case _ => ??? + |""".stripMargin).fromRoot { root => + val res = os.proc(TestUtil.cli, "compile", sourceFileName) + .call(cwd = root, check = false, stderr = os.Pipe) + expect(res.exitCode == 1) + val expectedError = + "Values of types object scala.collection.immutable.Nil and List[A] cannot be compared with == or !=" + expect(res.err.trim().contains(expectedError)) + } + } } diff --git a/modules/options/src/main/scala/scala/build/options/ScalacOpt.scala b/modules/options/src/main/scala/scala/build/options/ScalacOpt.scala index 95cf59d292..466142bb62 100644 --- a/modules/options/src/main/scala/scala/build/options/ScalacOpt.scala +++ b/modules/options/src/main/scala/scala/build/options/ScalacOpt.scala @@ -15,7 +15,8 @@ final case class ScalacOpt(value: String) { object ScalacOpt { private val repeatingKeys = Set( "-Xplugin:", - "-P" // plugin options + "-P", // plugin options + "-language:" ) implicit val hashedType: HashedType[ScalacOpt] = {