diff --git a/modules/build/src/main/scala/scala/build/CrossSources.scala b/modules/build/src/main/scala/scala/build/CrossSources.scala index 362ad844ba..c96449d667 100644 --- a/modules/build/src/main/scala/scala/build/CrossSources.scala +++ b/modules/build/src/main/scala/scala/build/CrossSources.scala @@ -153,6 +153,12 @@ object CrossSources { val preprocessedInputFromArgs = value(preprocessSources(inputs.flattened())) + val preprocessedWithUsingDirs = + preprocessedInputFromArgs.filter(p => p.options != Some(BuildOptions()) && p.options != None) + if (preprocessedWithUsingDirs.length > 1) println( + "Warning: using directives detected in multiple files. It is recommended to keep them centralized in the project.scala file." + ) + val sourcesFromDirectives = preprocessedInputFromArgs .flatMap(_.options) diff --git a/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala index b920801fc3..163aa143c2 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala @@ -683,6 +683,27 @@ abstract class RunTestDefinitions(val scalaVersionOpt: Option[String]) } } + test("multiple using directives warning message") { + val inputs = TestInputs( + os.rel / "Foo.scala" -> + s"""//> using scala "3.2.0" + | + |object Foo extends App { + | println("Foo") + |} + |""".stripMargin, + os.rel / "Bar.scala" -> "", + os.rel / "Hello.java" -> "//> using packaging.output \"out\"", + ) + inputs.fromRoot{ root => + val warningMessage = "Warning: using directives detected in multiple files." + val output1 = os.proc(TestUtil.cli, ".").call(cwd = root).out.trim() + val output2 = os.proc(TestUtil.cli, "Foo.scala", "Bar.scala").call(cwd = root).out.trim() + expect(output1.contains(warningMessage)) + expect(!output2.contains(warningMessage)) + } + } + def sudoTest(): Unit = { val fileName = "simple.sc" val message = "Hello"