From 00aef2757d1b6750f155552d1df4bd61eb61dd5e Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 08:45:36 +0200 Subject: [PATCH 01/11] Add `JavaModule.managedJavacOptions` This will hold options contributed by traits like `ErrorProneModule`. Those are not propagated to the inner test trait intentionally, since those options are typically configured by other means, e.g. dedicated targets. --- bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala | 2 +- scalalib/src/mill/scalalib/JavaModule.scala | 7 ++++++- scalalib/src/mill/scalalib/ScalaModule.scala | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala index 4e43072beb5..42be0f7054b 100644 --- a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala +++ b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala @@ -26,7 +26,7 @@ private trait MillJavaBuildServer extends JavaBuildServer { this: MillBuildServe sem.bspCompiledClassesAndSemanticDbFiles case _ => m.bspCompileClassesPath } - T.task { (classesPathTask(), m.javacOptions(), m.bspCompileClasspath()) } + T.task { (classesPathTask(), m.javacOptions() ++ m.managedJavacOptions(), m.bspCompileClasspath()) } } ) { // We ignore all non-JavaModule diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala index cf29ce5e64c..141da6b0d4f 100644 --- a/scalalib/src/mill/scalalib/JavaModule.scala +++ b/scalalib/src/mill/scalalib/JavaModule.scala @@ -160,6 +160,11 @@ trait JavaModule */ def javacOptions: T[Seq[String]] = T { Seq.empty[String] } + /** + * Additional options for the java compiled derived from other module settings. + */ + def managedJavacOptions: T[Seq[String]] = T { Seq.empty[String] } + /** * The direct dependencies of this module. * This is meant to be overridden to add dependencies. @@ -422,7 +427,7 @@ trait JavaModule upstreamCompileOutput = upstreamCompileOutput(), sources = allSourceFiles().map(_.path), compileClasspath = compileClasspath().map(_.path), - javacOptions = javacOptions(), + javacOptions = javacOptions() ++ managedJavacOptions(), reporter = T.reporter.apply(hashCode), reportCachedProblems = zincReportCachedProblems(), incrementalCompilation = zincIncrementalCompilation() diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index ac78703feb1..be76697edc5 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -279,7 +279,7 @@ trait ScalaModule extends JavaModule with TestModule.ScalaModuleBase { outer => upstreamCompileOutput = upstreamCompileOutput(), sources = allSourceFiles().map(_.path), compileClasspath = compileClasspath().map(_.path), - javacOptions = javacOptions(), + javacOptions = javacOptions() ++ managedJavacOptions(), scalaVersion = sv, scalaOrganization = scalaOrganization(), scalacOptions = allScalacOptions(), From 42309a99bc25869c5da15cbca696ee2b068f9b7b Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 09:29:40 +0200 Subject: [PATCH 02/11] . --- .../src/mill/bsp/worker/MillJavaBuildServer.scala | 4 +++- contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala | 6 ++++-- .../mill/contrib/errorprone/ErrorProneModule.scala | 11 +++-------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala index 42be0f7054b..03112883c05 100644 --- a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala +++ b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala @@ -26,7 +26,9 @@ private trait MillJavaBuildServer extends JavaBuildServer { this: MillBuildServe sem.bspCompiledClassesAndSemanticDbFiles case _ => m.bspCompileClassesPath } - T.task { (classesPathTask(), m.javacOptions() ++ m.managedJavacOptions(), m.bspCompileClasspath()) } + T.task { + (classesPathTask(), m.javacOptions() ++ m.managedJavacOptions(), m.bspCompileClasspath()) + } } ) { // We ignore all non-JavaModule diff --git a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala index 3d27d323cfd..8671367d71d 100644 --- a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala +++ b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala @@ -161,8 +161,10 @@ class BloopImpl(evs: () => Seq[Evaluator], wd: os.Path) extends ExternalModule { def out(m: JavaModule) = bloopDir / "out" / name(m) def classes(m: JavaModule) = out(m) / "classes" - val javaConfig = - module.javacOptions.map(opts => Some(Config.Java(options = opts.toList))) + val javaConfig = T.task { + val opts = module.javacOptions() ++ module.managedJavacOptions() + Some(Config.Java(options = opts.toList)) + } // ////////////////////////////////////////////////////////////////////////// // Scalac diff --git a/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala b/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala index ff51b5b4f70..75f92a2c908 100644 --- a/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala +++ b/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala @@ -31,7 +31,7 @@ trait ErrorProneModule extends JavaModule { * The classpath of the `error-prone` compiler plugin. */ def errorProneClasspath: T[Agg[PathRef]] = T { - resolveDeps(T.task { errorProneDeps().map(bindDependency()) })() + defaultResolver().resolveDeps(errorProneDeps()) } /** @@ -70,12 +70,7 @@ trait ErrorProneModule extends JavaModule { /** * Appends the [[errorProneJavacEnableOptions]] to the Java compiler options. */ - override def javacOptions: T[Seq[String]] = T { - val supOpts = super.javacOptions() - val enableOpts = Option - .when(!supOpts.exists(o => o.startsWith("-Xplugin:ErrorProne")))( - errorProneJavacEnableOptions() - ) - supOpts ++ enableOpts.toSeq.flatten + override def managedJavacOptions: T[Seq[String]] = T { + super.managedJavacOptions() ++ errorProneJavacEnableOptions() } } From 2b30877a386292ce589e8a6e2f0c98027e5438d2 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 10:06:43 +0200 Subject: [PATCH 03/11] fix test --- .../test/src/mill/contrib/errorprone/ErrorProneTests.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala b/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala index 617697d9a36..4a075b296b9 100644 --- a/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala +++ b/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala @@ -34,7 +34,7 @@ object ErrorProneTests extends TestSuite { } test("compileWarn") { val eval = UnitTester(errorProneCustom, testModuleSourcesPath, debugEnabled = true) - val Right(opts) = eval(errorProneCustom.javacOptions) + val Right(opts) = eval(errorProneCustom.managedJavacOptions) assert(opts.value.exists(_.contains("-XepAllErrorsAsWarnings"))) val res = eval(errorProneCustom.compile) assert(res.isRight) From 4bd69efbc363bcc4a102e1de614ac678d3fcb310 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 10:07:01 +0200 Subject: [PATCH 04/11] . --- scalalib/src/mill/scalalib/JavaModule.scala | 3 ++- scalalib/src/mill/scalalib/ScalaModule.scala | 2 +- scalalib/src/mill/scalalib/SemanticDbJavaModule.scala | 6 +++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala index 141da6b0d4f..944bf82cd66 100644 --- a/scalalib/src/mill/scalalib/JavaModule.scala +++ b/scalalib/src/mill/scalalib/JavaModule.scala @@ -35,7 +35,8 @@ trait JavaModule with BspModule with SemanticDbJavaModule { outer => - def zincWorker: ModuleRef[ZincWorkerModule] = super.zincWorker + override def zincWorker: ModuleRef[ZincWorkerModule] = super.zincWorker + @nowarn type JavaTests = JavaModuleTests @deprecated("Use JavaTests instead", since = "Mill 0.11.10") trait JavaModuleTests extends JavaModule with TestModule { diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index be76697edc5..5fdecc7aa67 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -28,7 +28,7 @@ trait ScalaModule extends JavaModule with TestModule.ScalaModuleBase { outer => @deprecated("use ScalaTests", "0.11.0") type ScalaModuleTests = ScalaTests - trait ScalaTests extends JavaModuleTests with ScalaModule { + trait ScalaTests extends JavaTests with ScalaModule { override def scalaOrganization: Target[String] = outer.scalaOrganization() override def scalaVersion: Target[String] = outer.scalaVersion() override def scalacPluginIvyDeps: Target[Agg[Dep]] = outer.scalacPluginIvyDeps() diff --git a/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala b/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala index 346c1eb383c..f66a7b3cbb6 100644 --- a/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala +++ b/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala @@ -20,6 +20,7 @@ trait SemanticDbJavaModule extends CoursierModule { def compile: T[mill.scalalib.api.CompilationResult] def bspBuildTarget: BspBuildTarget def javacOptions: T[Seq[String]] + def managedJavacOptions: T[Seq[String]] def compileClasspath: T[Agg[PathRef]] def semanticDbVersion: T[String] = T.input { @@ -98,7 +99,10 @@ trait SemanticDbJavaModule extends CoursierModule { } def semanticDbData: T[PathRef] = T.persistent { - val javacOpts = SemanticDbJavaModule.javacOptionsTask(javacOptions(), semanticDbJavaVersion()) + val javacOpts = SemanticDbJavaModule.javacOptionsTask( + javacOptions() ++ managedJavacOptions(), + semanticDbJavaVersion() + ) // we currently assume, we don't do incremental java compilation os.remove.all(T.dest / "classes") From d05d0593529495bb1c0d417651eb499892a62ef8 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 10:11:17 +0200 Subject: [PATCH 05/11] Some more deprecation fixes --- .../test/src/mill/contrib/scoverage/HelloWorldTests.scala | 2 +- contrib/testng/test/src/mill/testng/TestNGTests.scala | 3 +-- scalalib/src/mill/scalalib/CrossSbtModule.scala | 6 +++++- scalalib/src/mill/scalalib/MavenModule.scala | 5 ++++- scalalib/src/mill/scalalib/SbtModule.scala | 3 +++ scalalib/test/src/mill/scalalib/HelloJavaTests.scala | 6 +++--- 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/contrib/scoverage/test/src/mill/contrib/scoverage/HelloWorldTests.scala b/contrib/scoverage/test/src/mill/contrib/scoverage/HelloWorldTests.scala index 87c0befa9ff..887a3b66bb4 100644 --- a/contrib/scoverage/test/src/mill/contrib/scoverage/HelloWorldTests.scala +++ b/contrib/scoverage/test/src/mill/contrib/scoverage/HelloWorldTests.scala @@ -55,7 +55,7 @@ trait HelloWorldTests extends utest.TestSuite { def scalaVersion = testScalaVersion def scoverageVersion = testScoverageVersion - object test extends SbtModuleTests with ScoverageTests with TestModule.ScalaTest { + object test extends SbtTests with ScoverageTests with TestModule.ScalaTest { override def ivyDeps = Agg(ivy"org.scalatest::scalatest:${testScalatestVersion}") } } diff --git a/contrib/testng/test/src/mill/testng/TestNGTests.scala b/contrib/testng/test/src/mill/testng/TestNGTests.scala index d9cd0694e01..2cab918689e 100644 --- a/contrib/testng/test/src/mill/testng/TestNGTests.scala +++ b/contrib/testng/test/src/mill/testng/TestNGTests.scala @@ -6,14 +6,13 @@ import mill.util.Util.millProjectModule import mill.scalalib._ import mill.testkit.UnitTester import mill.testkit.TestBaseModule -import utest.framework.TestPath import utest.{TestSuite, Tests, assert, _} object TestNGTests extends TestSuite { object demo extends TestBaseModule with JavaModule { - object test extends JavaModuleTests { + object test extends JavaTests { def testngClasspath = T { millProjectModule( "mill-contrib-testng", diff --git a/scalalib/src/mill/scalalib/CrossSbtModule.scala b/scalalib/src/mill/scalalib/CrossSbtModule.scala index 40f68ad574c..6f5828bed83 100644 --- a/scalalib/src/mill/scalalib/CrossSbtModule.scala +++ b/scalalib/src/mill/scalalib/CrossSbtModule.scala @@ -4,6 +4,8 @@ import mill.api.PathRef import mill.T import mill.scalalib.{CrossModuleBase, SbtModule} +import scala.annotation.nowarn + trait CrossSbtModule extends SbtModule with CrossModuleBase { outer => override def sources: T[Seq[PathRef]] = T.sources { @@ -12,9 +14,10 @@ trait CrossSbtModule extends SbtModule with CrossModuleBase { outer => ) } + @nowarn type CrossSbtTests = CrossSbtModuleTests @deprecated("Use CrossSbtTests instead", since = "Mill 0.11.10") - trait CrossSbtModuleTests extends SbtModuleTests { + trait CrossSbtModuleTests extends SbtTests { override def millSourcePath = outer.millSourcePath override def sources = T.sources { super.sources() ++ scalaVersionDirectoryNames.map(s => @@ -22,5 +25,6 @@ trait CrossSbtModule extends SbtModule with CrossModuleBase { outer => ) } } + @deprecated("Use CrossTests instead", since = "Mill after 0.12.0-RC1") trait Tests extends CrossSbtModuleTests } diff --git a/scalalib/src/mill/scalalib/MavenModule.scala b/scalalib/src/mill/scalalib/MavenModule.scala index 80a7871c2bd..f661bdda164 100644 --- a/scalalib/src/mill/scalalib/MavenModule.scala +++ b/scalalib/src/mill/scalalib/MavenModule.scala @@ -2,6 +2,8 @@ package mill.scalalib import mill.T +import scala.annotation.nowarn + /** * A [[JavaModule]] with a Maven compatible directory layout. * @@ -16,9 +18,10 @@ trait MavenModule extends JavaModule { outer => millSourcePath / "src" / "main" / "resources" } + @nowarn type MavenTests = MavenModuleTests @deprecated("Use JavaTests instead", since = "Mill 0.11.10") - trait MavenModuleTests extends JavaModuleTests { + trait MavenModuleTests extends JavaTests { override def millSourcePath = outer.millSourcePath override def intellijModulePath: os.Path = outer.millSourcePath / "src" / "test" diff --git a/scalalib/src/mill/scalalib/SbtModule.scala b/scalalib/src/mill/scalalib/SbtModule.scala index be9bf0df839..206c74a1afa 100644 --- a/scalalib/src/mill/scalalib/SbtModule.scala +++ b/scalalib/src/mill/scalalib/SbtModule.scala @@ -2,6 +2,8 @@ package mill.scalalib import mill.T +import scala.annotation.nowarn + /** * A [[ScalaModule]] with sbt compatible directory layout. */ @@ -12,6 +14,7 @@ trait SbtModule extends ScalaModule with MavenModule { millSourcePath / "src" / "main" / "java" ) + @nowarn type SbtTests = SbtModuleTests @deprecated("Use SbtTests instead", since = "Mill 0.11.10") trait SbtModuleTests extends ScalaTests with MavenTests { diff --git a/scalalib/test/src/mill/scalalib/HelloJavaTests.scala b/scalalib/test/src/mill/scalalib/HelloJavaTests.scala index c32a4d46e8e..60e69628b04 100644 --- a/scalalib/test/src/mill/scalalib/HelloJavaTests.scala +++ b/scalalib/test/src/mill/scalalib/HelloJavaTests.scala @@ -12,13 +12,13 @@ object HelloJavaTests extends TestSuite { object HelloJava extends TestBaseModule { object core extends JavaModule { override def docJarUseArgsFile = false - object test extends JavaModuleTests with TestModule.Junit4 + object test extends JavaTests with TestModule.Junit4 } object app extends JavaModule { override def docJarUseArgsFile = true override def moduleDeps = Seq(core) - object test extends JavaModuleTests with TestModule.Junit4 - object testJunit5 extends JavaModuleTests with TestModule.Junit5 { + object test extends JavaTests with TestModule.Junit4 + object testJunit5 extends JavaTests with TestModule.Junit5 { override def ivyDeps: T[Agg[Dep]] = T { super.ivyDeps() ++ Agg(ivy"org.junit.jupiter:junit-jupiter-params:5.7.0") } From 88a8056c1c70b0a16d184b0e641b1908d8df1286 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 11:26:36 +0200 Subject: [PATCH 06/11] Update scalalib/src/mill/scalalib/JavaModule.scala --- scalalib/src/mill/scalalib/JavaModule.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala index 944bf82cd66..fc4a8e952ca 100644 --- a/scalalib/src/mill/scalalib/JavaModule.scala +++ b/scalalib/src/mill/scalalib/JavaModule.scala @@ -162,7 +162,7 @@ trait JavaModule def javacOptions: T[Seq[String]] = T { Seq.empty[String] } /** - * Additional options for the java compiled derived from other module settings. + * Additional options for the java compiler derived from other module settings. */ def managedJavacOptions: T[Seq[String]] = T { Seq.empty[String] } From cf07b227e598232d8d3504966d4c2daebc11eae3 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 15:36:56 +0200 Subject: [PATCH 07/11] Standardize on `mandatoryJavacOptions` for consistency with pre-existing targets --- bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala | 2 +- contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala | 2 +- .../src/mill/contrib/errorprone/ErrorProneModule.scala | 4 ++-- .../test/src/mill/contrib/errorprone/ErrorProneTests.scala | 2 +- scalalib/src/mill/scalalib/JavaModule.scala | 4 ++-- scalalib/src/mill/scalalib/ScalaModule.scala | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala index 03112883c05..ed6165da37b 100644 --- a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala +++ b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala @@ -27,7 +27,7 @@ private trait MillJavaBuildServer extends JavaBuildServer { this: MillBuildServe case _ => m.bspCompileClassesPath } T.task { - (classesPathTask(), m.javacOptions() ++ m.managedJavacOptions(), m.bspCompileClasspath()) + (classesPathTask(), m.javacOptions() ++ m.mandatoryJavacOptions(), m.bspCompileClasspath()) } } ) { diff --git a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala index 8671367d71d..22db0a8734a 100644 --- a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala +++ b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala @@ -162,7 +162,7 @@ class BloopImpl(evs: () => Seq[Evaluator], wd: os.Path) extends ExternalModule { def classes(m: JavaModule) = out(m) / "classes" val javaConfig = T.task { - val opts = module.javacOptions() ++ module.managedJavacOptions() + val opts = module.javacOptions() ++ module.mandatoryJavacOptions() Some(Config.Java(options = opts.toList)) } diff --git a/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala b/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala index 75f92a2c908..c6e27f097dd 100644 --- a/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala +++ b/contrib/errorprone/src/mill/contrib/errorprone/ErrorProneModule.scala @@ -70,7 +70,7 @@ trait ErrorProneModule extends JavaModule { /** * Appends the [[errorProneJavacEnableOptions]] to the Java compiler options. */ - override def managedJavacOptions: T[Seq[String]] = T { - super.managedJavacOptions() ++ errorProneJavacEnableOptions() + override def mandatoryJavacOptions: T[Seq[String]] = T { + super.mandatoryJavacOptions() ++ errorProneJavacEnableOptions() } } diff --git a/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala b/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala index 4a075b296b9..9621406281f 100644 --- a/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala +++ b/contrib/errorprone/test/src/mill/contrib/errorprone/ErrorProneTests.scala @@ -34,7 +34,7 @@ object ErrorProneTests extends TestSuite { } test("compileWarn") { val eval = UnitTester(errorProneCustom, testModuleSourcesPath, debugEnabled = true) - val Right(opts) = eval(errorProneCustom.managedJavacOptions) + val Right(opts) = eval(errorProneCustom.mandatoryJavacOptions) assert(opts.value.exists(_.contains("-XepAllErrorsAsWarnings"))) val res = eval(errorProneCustom.compile) assert(res.isRight) diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala index fc4a8e952ca..3171c6a04a1 100644 --- a/scalalib/src/mill/scalalib/JavaModule.scala +++ b/scalalib/src/mill/scalalib/JavaModule.scala @@ -164,7 +164,7 @@ trait JavaModule /** * Additional options for the java compiler derived from other module settings. */ - def managedJavacOptions: T[Seq[String]] = T { Seq.empty[String] } + def mandatoryJavacOptions: T[Seq[String]] = T { Seq.empty[String] } /** * The direct dependencies of this module. @@ -428,7 +428,7 @@ trait JavaModule upstreamCompileOutput = upstreamCompileOutput(), sources = allSourceFiles().map(_.path), compileClasspath = compileClasspath().map(_.path), - javacOptions = javacOptions() ++ managedJavacOptions(), + javacOptions = javacOptions() ++ mandatoryJavacOptions(), reporter = T.reporter.apply(hashCode), reportCachedProblems = zincReportCachedProblems(), incrementalCompilation = zincIncrementalCompilation() diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index 5fdecc7aa67..250afac44b3 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -279,7 +279,7 @@ trait ScalaModule extends JavaModule with TestModule.ScalaModuleBase { outer => upstreamCompileOutput = upstreamCompileOutput(), sources = allSourceFiles().map(_.path), compileClasspath = compileClasspath().map(_.path), - javacOptions = javacOptions() ++ managedJavacOptions(), + javacOptions = javacOptions() ++ mandatoryJavacOptions(), scalaVersion = sv, scalaOrganization = scalaOrganization(), scalacOptions = allScalacOptions(), From c976b5fa41f924d2738a4858fc0ab73bddde920c Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 15:45:45 +0200 Subject: [PATCH 08/11] . --- scalalib/src/mill/scalalib/SemanticDbJavaModule.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala b/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala index f66a7b3cbb6..16ac0251b8d 100644 --- a/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala +++ b/scalalib/src/mill/scalalib/SemanticDbJavaModule.scala @@ -20,7 +20,7 @@ trait SemanticDbJavaModule extends CoursierModule { def compile: T[mill.scalalib.api.CompilationResult] def bspBuildTarget: BspBuildTarget def javacOptions: T[Seq[String]] - def managedJavacOptions: T[Seq[String]] + def mandatoryJavacOptions: T[Seq[String]] def compileClasspath: T[Agg[PathRef]] def semanticDbVersion: T[String] = T.input { @@ -100,7 +100,7 @@ trait SemanticDbJavaModule extends CoursierModule { def semanticDbData: T[PathRef] = T.persistent { val javacOpts = SemanticDbJavaModule.javacOptionsTask( - javacOptions() ++ managedJavacOptions(), + javacOptions() ++ mandatoryJavacOptions(), semanticDbJavaVersion() ) From db2299cad73121e9dcdb38c040f6ebe6a961205f Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 16:23:34 +0200 Subject: [PATCH 09/11] Don't propagae `mandatoryScalacOptions` to tests, too Needed to add a MiMa exclusion, which should be safe in this case. --- build.mill | 6 +++++- scalalib/src/mill/scalalib/ScalaModule.scala | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build.mill b/build.mill index 70dbe4c21f2..0f1369074e5 100644 --- a/build.mill +++ b/build.mill @@ -522,6 +522,11 @@ trait MillStableScalaModule extends MillPublishScalaModule with Mima { ), ProblemFilter.exclude[InheritedNewAbstractMethodProblem]( "mill.main.MainModule.mill$define$BaseModule0$_setter_$evalWatchedValues_=" + ), + + // https://github.com/com-lihaoyi/mill/pull/3503 + ProblemFilter.exclude[ReversedMissingMethodProblem]( + "mill.scalalib.ScalaModule#ScalaTests.mill$scalalib$ScalaModule$ScalaTests$$super$mandatoryScalacOptions" ) ) def mimaPreviousVersions: T[Seq[String]] = Settings.mimaBaseVersions @@ -875,7 +880,6 @@ object dist extends MillPublishJavaModule { } } - /** * Build and install Mill locally. * diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index 250afac44b3..48e3a412e1d 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -34,7 +34,7 @@ trait ScalaModule extends JavaModule with TestModule.ScalaModuleBase { outer => override def scalacPluginIvyDeps: Target[Agg[Dep]] = outer.scalacPluginIvyDeps() override def scalacPluginClasspath: Target[Agg[PathRef]] = outer.scalacPluginClasspath() override def scalacOptions: Target[Seq[String]] = outer.scalacOptions() - override def mandatoryScalacOptions: Target[Seq[String]] = outer.mandatoryScalacOptions() + override def mandatoryScalacOptions: Target[Seq[String]] = T{ super.mandatoryScalacOptions() } } /** From d68224447fe2ae69fee3688d3d08ed26cff8e3f8 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 16:44:54 +0200 Subject: [PATCH 10/11] scalafmt --- bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala | 6 +++++- scalalib/src/mill/scalalib/ScalaModule.scala | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala index ed6165da37b..e7b00993267 100644 --- a/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala +++ b/bsp/worker/src/mill/bsp/worker/MillJavaBuildServer.scala @@ -27,7 +27,11 @@ private trait MillJavaBuildServer extends JavaBuildServer { this: MillBuildServe case _ => m.bspCompileClassesPath } T.task { - (classesPathTask(), m.javacOptions() ++ m.mandatoryJavacOptions(), m.bspCompileClasspath()) + ( + classesPathTask(), + m.javacOptions() ++ m.mandatoryJavacOptions(), + m.bspCompileClasspath() + ) } } ) { diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index 48e3a412e1d..d5ae1354465 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -34,7 +34,7 @@ trait ScalaModule extends JavaModule with TestModule.ScalaModuleBase { outer => override def scalacPluginIvyDeps: Target[Agg[Dep]] = outer.scalacPluginIvyDeps() override def scalacPluginClasspath: Target[Agg[PathRef]] = outer.scalacPluginClasspath() override def scalacOptions: Target[Seq[String]] = outer.scalacOptions() - override def mandatoryScalacOptions: Target[Seq[String]] = T{ super.mandatoryScalacOptions() } + override def mandatoryScalacOptions: Target[Seq[String]] = T { super.mandatoryScalacOptions() } } /** From fb90566ff8fcaa6e32d492046a25212f1810b164 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Tue, 10 Sep 2024 16:45:27 +0200 Subject: [PATCH 11/11] Fix test: we no longer expect this one --- scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala | 4 ---- 1 file changed, 4 deletions(-) diff --git a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala index 12caab47a32..570ca339611 100644 --- a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala +++ b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala @@ -68,7 +68,6 @@ object HelloJSWorldTests extends TestSuite { object inherited extends ScalaJSModule { val (scala, scalaJS) = matrix.head def scalacOptions = Seq("-deprecation") - def mandatoryScalacOptions = Seq("-mandatory") def scalaOrganization = "org.example" def scalaVersion = scala def scalaJSVersion = scalaJS @@ -292,9 +291,6 @@ object HelloJSWorldTests extends TestSuite { test("test-scalacOptions") { checkInheritedTargets(_.scalacOptions, Seq("-deprecation")) } - test("test-mandatoryScalacOptions") { - checkInheritedTargets(_.mandatoryScalacOptions, Seq("-mandatory")) - } test("test-scalaOrganization") { checkInheritedTargets(_.scalaOrganization, "org.example") }