diff --git a/integration/ide/gen-idea/src/GenIdeaExtendedTests.scala b/integration/ide/gen-idea/src/GenIdeaExtendedTests.scala index 527ff76b8212..500ae5a445cc 100644 --- a/integration/ide/gen-idea/src/GenIdeaExtendedTests.scala +++ b/integration/ide/gen-idea/src/GenIdeaExtendedTests.scala @@ -3,7 +3,6 @@ package mill.integration import mill.testkit.UtestIntegrationTestSuite import utest._ -import scala.util.Try import os.Path object GenIdeaExtendedTests extends UtestIntegrationTestSuite { @@ -18,16 +17,14 @@ object GenIdeaExtendedTests extends UtestIntegrationTestSuite { eval("mill.idea.GenIdea/") - val checks = resources.map { resource => - Try { + resources.map { resource => + for (resource <- resources) { GenIdeaUtils.assertIdeaXmlResourceMatchesFile( workspacePath, resource ) } } - assert(checks.forall(_.isSuccess)) } } - } diff --git a/integration/ide/gen-idea/src/GenIdeaUtils.scala b/integration/ide/gen-idea/src/GenIdeaUtils.scala index ff525a0a141b..c64ff6fb3e26 100644 --- a/integration/ide/gen-idea/src/GenIdeaUtils.scala +++ b/integration/ide/gen-idea/src/GenIdeaUtils.scala @@ -17,21 +17,15 @@ object GenIdeaUtils { val expectedResourcePath = workspacePath / "idea" / resource val actualResourcePath = workspacePath / ".idea" / resource - val check = Try { - val expectedResourceString = os.read.lines(expectedResourcePath).mkString("\n") - val actualResourceString = normaliseLibraryPaths(os.read(actualResourcePath), workspacePath) - - assertPartialContentMatches( - found = actualResourceString, - expected = expectedResourceString, - resource.toString() - ) - } - println( - s"Checking ${expectedResourcePath.relativeTo(workspacePath)} ... ${if (check.isSuccess) "OK" - else "FAILED"}" + println(s"Checking ${expectedResourcePath.relativeTo(workspacePath)} ...") + val expectedResourceString = os.read.lines(expectedResourcePath).mkString("\n") + val actualResourceString = normaliseLibraryPaths(os.read(actualResourcePath), workspacePath) + + assertPartialContentMatches( + found = actualResourceString, + expected = expectedResourceString, + resource.toString() ) - check.get } def assertPartialContentMatches(found: String, expected: String, context: String = ""): Unit = { @@ -41,7 +35,7 @@ object GenIdeaUtils { val pattern = "(?s)^\\Q" + expected.replaceAll(Pattern.quote(ignoreString), "\\\\E.*\\\\Q") + "\\E$" - assert(Pattern.compile(pattern).matcher(found).matches()) + scala.Predef.assert(Pattern.compile(pattern).matcher(found).matches(), found) } private def normaliseLibraryPaths(in: String, workspacePath: os.Path): String = { diff --git a/integration/invalidation/codesig-hello/src/CodeSigHelloTests.scala b/integration/invalidation/codesig-hello/src/CodeSigHelloTests.scala index 885fa985a31f..51654b6f5ad1 100644 --- a/integration/invalidation/codesig-hello/src/CodeSigHelloTests.scala +++ b/integration/invalidation/codesig-hello/src/CodeSigHelloTests.scala @@ -21,7 +21,8 @@ object CodeSigHelloTests extends UtestIntegrationTestSuite { modifyFile(workspacePath / "build.mill", _.replace("running foo", "running foo2")) val mangledFoo = eval("foo") - assert(mangledFoo.out.linesIterator.toSeq == Seq("running foo2", "running helperFoo")) + val out1 = mangledFoo.out.linesIterator.toSeq + assert(out1 == Seq("running foo2", "running helperFoo")) val cached2 = eval("foo") assert(cached2.out == "") diff --git a/integration/invalidation/codesig-scalamodule/src/CodeSigScalaModuleTests.scala b/integration/invalidation/codesig-scalamodule/src/CodeSigScalaModuleTests.scala index 8ccea607335d..86f9786ae47c 100644 --- a/integration/invalidation/codesig-scalamodule/src/CodeSigScalaModuleTests.scala +++ b/integration/invalidation/codesig-scalamodule/src/CodeSigScalaModuleTests.scala @@ -101,14 +101,18 @@ object CodeSigScalaModuleTests extends UtestIntegrationTestSuite { ) // Adding newlines in various places doesn't invalidate anything + // (preserving the indentation to avoid warnings in Scala 3). modifyFile( workspacePath / "build.mill", s => "\n\n\n" + - s.replace("def scalaVersion", "\ndef scalaVersion\n") - .replace("def sources", "\ndef sources\n") - .replace("def compile", "\ndef compile\n") - .replace("def run", "\ndef run\n") + s.replace("\n def scalaVersion", "\n\n def scalaVersion") + .replace("\n def sources = T{\n", "\n\n def sources = T{\n\n") + .replace("\n def compile = T {\n", "\n\n def compile = T {\n\n") + .replace( + "\n def run(args: Task[Args] = T.task(Args())) = T.command {\n", + "\n\n def run(args: Task[Args] = T.task(Args())) = T.command {\n\n" + ) ) val mangledFoo6 = eval("foo.run") assert( diff --git a/javascriptlib/src/mill/javascriptlib/ReactScriptsModule.scala b/javascriptlib/src/mill/javascriptlib/ReactScriptsModule.scala index fe5a6ddd9dec..e569a24e8736 100644 --- a/javascriptlib/src/mill/javascriptlib/ReactScriptsModule.scala +++ b/javascriptlib/src/mill/javascriptlib/ReactScriptsModule.scala @@ -118,7 +118,7 @@ trait ReactScriptsModule extends TypeScriptModule { } override def forkEnv = - Task.Anon { + Task { Map("NODE_PATH" -> Seq( ".", compile()._1.path, diff --git a/main/src/mill/main/SelectiveExecutionModule.scala b/main/src/mill/main/SelectiveExecutionModule.scala index 96a75952747e..c313eb419955 100644 --- a/main/src/mill/main/SelectiveExecutionModule.scala +++ b/main/src/mill/main/SelectiveExecutionModule.scala @@ -57,7 +57,7 @@ trait SelectiveExecutionModule extends mill.define.Module { } match { case Left(err) => Result.Failure(err) case Right((watched, Left(err))) => Result.Failure(err) - case Right((watched, Right(res))) => Result.Success(res) + case Right((watched, Right(res))) => Result.Success(()) } } } diff --git a/main/src/mill/main/TokenReaders.scala b/main/src/mill/main/TokenReaders.scala index 44374818aba2..2d71ca7058f7 100644 --- a/main/src/mill/main/TokenReaders.scala +++ b/main/src/mill/main/TokenReaders.scala @@ -69,5 +69,5 @@ trait TokenReaders0 { case t: TokensReader.Leftover[_, _] => new LeftoverTaskTokenReader[T](t) } - def given = () // dummy for scala 2/3 compat + def `given` = () // dummy for scala 2/3 compat } diff --git a/main/util/src/mill/util/SpanningForest.scala b/main/util/src/mill/util/SpanningForest.scala index 4b062cafa79c..42207d7f0ecb 100644 --- a/main/util/src/mill/util/SpanningForest.scala +++ b/main/util/src/mill/util/SpanningForest.scala @@ -78,11 +78,12 @@ private[mill] object SpanningForest { while (queued.nonEmpty) { val current = queued.dequeue() - seen.add(current) seenList.append(current) - - for (next <- edges(current).iterator) { - if (!seen.contains(next)) queued.enqueue(next) + for (next <- edges(current)) { + if (!seen.contains(next)) { + seen.add(next) + queued.enqueue(next) + } } } seenList.toSeq diff --git a/main/util/test/src/mill/util/SpanningForestTests.scala b/main/util/test/src/mill/util/SpanningForestTests.scala index afab8147a491..d46bedee0983 100644 --- a/main/util/test/src/mill/util/SpanningForestTests.scala +++ b/main/util/test/src/mill/util/SpanningForestTests.scala @@ -13,8 +13,8 @@ object SpanningForestTests extends TestSuite { Array(1), Array(2), Array(3), - Array(), - Array() + Array[Int](), + Array[Int]() ), Set(0), limitToImportantVertices = false diff --git a/scalajslib/src/mill/scalajslib/worker/ScalaJSWorker.scala b/scalajslib/src/mill/scalajslib/worker/ScalaJSWorker.scala index b7c1600e9f3c..19bb946b2e9f 100644 --- a/scalajslib/src/mill/scalajslib/worker/ScalaJSWorker.scala +++ b/scalajslib/src/mill/scalajslib/worker/ScalaJSWorker.scala @@ -231,6 +231,6 @@ private[scalajslib] class ScalaJSWorker(jobs: Int) private[scalajslib] object ScalaJSWorkerExternalModule extends mill.define.ExternalModule { def scalaJSWorker: Worker[ScalaJSWorker] = - Task.Worker { new ScalaJSWorker(Task.ctx.asInstanceOf[mill.api.Ctx.Jobs].jobs) } + Task.Worker { new ScalaJSWorker(Task.ctx().asInstanceOf[mill.api.Ctx.Jobs].jobs) } lazy val millDiscover: Discover = Discover[this.type] } diff --git a/scalalib/src/mill/scalalib/CoursierModule.scala b/scalalib/src/mill/scalalib/CoursierModule.scala index 7b1559120f5b..0d5be1bfa890 100644 --- a/scalalib/src/mill/scalalib/CoursierModule.scala +++ b/scalalib/src/mill/scalalib/CoursierModule.scala @@ -25,7 +25,7 @@ trait CoursierModule extends mill.Module { * @return The [[BoundDep]] */ def bindDependency: Task[Dep => BoundDep] = Task.Anon { (dep: Dep) => - BoundDep((resolveCoursierDependency(): @nowarn).apply(dep), dep.force) + BoundDep((resolveCoursierDependency.apply(): @nowarn).apply(dep), dep.force) } @deprecated("To be replaced by bindDependency", "Mill after 0.11.0-M0") diff --git a/scalalib/src/mill/scalalib/Dependency.scala b/scalalib/src/mill/scalalib/Dependency.scala index 36d9e65134a9..8bd82e27cff4 100644 --- a/scalalib/src/mill/scalalib/Dependency.scala +++ b/scalalib/src/mill/scalalib/Dependency.scala @@ -1,6 +1,6 @@ package mill.scalalib -import mill.Task +import mill.{Task, given} import mill.define.{Command, Discover, ExternalModule} import mill.eval.Evaluator import mill.scalalib.dependency.{DependencyUpdatesImpl, Format} diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala index 547a2818fe61..11e75739d9a2 100644 --- a/scalalib/src/mill/scalalib/JavaModule.scala +++ b/scalalib/src/mill/scalalib/JavaModule.scala @@ -3,6 +3,7 @@ package scalalib import coursier.{core => cs} import coursier.core.{BomDependency, Configuration, DependencyManagement, Resolution} +import coursier.params.ResolutionParams import coursier.parse.JavaOrScalaModule import coursier.parse.ModuleParser import coursier.util.{EitherT, ModuleMatcher, Monad} @@ -942,7 +943,8 @@ trait JavaModule BoundDep(coursierDependency, force = false) ), artifactTypes = Some(artifactTypes()), - resolutionParamsMapOpt = Some(_.withDefaultConfiguration(coursier.core.Configuration.compile)) + resolutionParamsMapOpt = + Some((_: ResolutionParams).withDefaultConfiguration(coursier.core.Configuration.compile)) ) } @@ -1402,7 +1404,9 @@ trait JavaModule ), sources = true, resolutionParamsMapOpt = - Some(_.withDefaultConfiguration(coursier.core.Configuration.compile)) + Some( + (_: ResolutionParams).withDefaultConfiguration(coursier.core.Configuration.compile) + ) ) }, Task.Anon { diff --git a/scalalib/src/mill/scalalib/Lib.scala b/scalalib/src/mill/scalalib/Lib.scala index 1dc0bcb33b8d..405acd1a79c5 100644 --- a/scalalib/src/mill/scalalib/Lib.scala +++ b/scalalib/src/mill/scalalib/Lib.scala @@ -145,18 +145,18 @@ object Lib { resolutionParams: ResolutionParams = ResolutionParams() ): Result[Agg[PathRef]] = { val depSeq = deps.iterator.toSeq - mill.util.Jvm.resolveDependencies( + val res = mill.util.Jvm.resolveDependencies( repositories = repositories, deps = depSeq.map(_.dep), force = depSeq.filter(_.force).map(_.dep), - sources = sources, - artifactTypes = artifactTypes, - mapDependencies = mapDependencies, customizer = customizer, ctx = ctx, coursierCacheCustomizer = coursierCacheCustomizer, + deprecatedResolveFilter = _ => true, resolutionParams = resolutionParams - ).map(_.map(_.withRevalidateOnce)) + ) + + res.map(_.map(_.withRevalidateOnce)) } // bin-compat shim diff --git a/scalalib/src/mill/scalalib/dependency/versions/VersionsFinder.scala b/scalalib/src/mill/scalalib/dependency/versions/VersionsFinder.scala index a49ad9411294..cbdc62932cfa 100644 --- a/scalalib/src/mill/scalalib/dependency/versions/VersionsFinder.scala +++ b/scalalib/src/mill/scalalib/dependency/versions/VersionsFinder.scala @@ -3,7 +3,7 @@ package mill.scalalib.dependency.versions import mill.define.{BaseModule, Task} import mill.eval.Evaluator import mill.scalalib.dependency.metadata.{MetadataLoader, MetadataLoaderFactory} -import mill.scalalib.{JavaModule, Lib} +import mill.scalalib.{BoundDep, JavaModule, Lib} import mill.api.Ctx.{Home, Log} import mill.T @@ -66,14 +66,19 @@ private[dependency] object VersionsFinder { .map(bindDependency) .iterator .toSeq - Lib.resolveDependenciesMetadataSafe( + + val x = Lib.resolveDependenciesMetadataSafe( repositories = repos, - deps = dependencies, - mapDependencies = Some(mapDeps), + deps = dependencies: IterableOnce[BoundDep], + mapDependencies = Option(mapDeps), customizer = custom, + ctx = Option(T.log), coursierCacheCustomizer = cacheCustom, - ctx = Some(T.log) - ).map { _ => + resolutionParams = coursier.params.ResolutionParams(), + boms = Nil + ) + + x.map { _ => (javaModule, metadataLoaders, dependencies.map(_.dep)) } } diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala index 530b5200cbee..a5549f490df0 100644 --- a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala +++ b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala @@ -150,7 +150,7 @@ trait ScalaNativeModule extends ScalaModule { outer => } } } - private[scalanativelib] def withScalaNativeBridge[T] = Task.Anon { + private[scalanativelib] def withScalaNativeBridge = Task.Anon { new ScalaNativeBridge( ScalaNativeWorkerExternalModule.scalaNativeWorker(), bridgeFullClassPath() @@ -158,12 +158,12 @@ trait ScalaNativeModule extends ScalaModule { outer => } // Location of the clang compiler def nativeClang = Task { - os.Path(withScalaNativeBridge().apply(_.discoverClang())) + os.Path(withScalaNativeBridge.apply().apply(_.discoverClang())) } // Location of the clang++ compiler def nativeClangPP = Task { - os.Path(withScalaNativeBridge().apply(_.discoverClangPP())) + os.Path(withScalaNativeBridge.apply().apply(_.discoverClangPP())) } // GC choice, either "none", "boehm", "immix" or "commix" @@ -172,19 +172,19 @@ trait ScalaNativeModule extends ScalaModule { outer => } def nativeGC = Task { - nativeGCInput().getOrElse(withScalaNativeBridge().apply(_.defaultGarbageCollector())) + nativeGCInput().getOrElse(withScalaNativeBridge.apply().apply(_.defaultGarbageCollector())) } def nativeTarget: T[Option[String]] = Task { None } // Options that are passed to clang during compilation def nativeCompileOptions = Task { - withScalaNativeBridge().apply(_.discoverCompileOptions()) + withScalaNativeBridge.apply().apply(_.discoverCompileOptions()) } // Options that are passed to clang during linking def nativeLinkingOptions = Task { - withScalaNativeBridge().apply(_.discoverLinkingOptions()) + withScalaNativeBridge.apply().apply(_.discoverLinkingOptions()) } // Whether to link `@stub` methods, or ignore them @@ -230,7 +230,7 @@ trait ScalaNativeModule extends ScalaModule { outer => private def nativeConfig: Task[NativeConfig] = Task.Anon { val classpath = runClasspath().map(_.path).filter(_.toIO.exists).toList - withScalaNativeBridge().apply(_.config( + withScalaNativeBridge.apply().apply(_.config( finalMainClassOpt(), classpath.map(_.toIO), nativeWorkdir().toIO, @@ -274,7 +274,7 @@ trait ScalaNativeModule extends ScalaModule { outer => // Generates native binary def nativeLink = Task { - os.Path(withScalaNativeBridge().apply(_.nativeLink( + os.Path(withScalaNativeBridge.apply().apply(_.nativeLink( nativeConfig().config, T.dest.toIO ))) @@ -376,7 +376,7 @@ trait TestScalaNativeModule extends ScalaNativeModule with TestModule { globSelectors: Task[Seq[String]] ): Task[(String, Seq[TestResult])] = Task.Anon { - val (close, framework) = withScalaNativeBridge().apply(_.getFramework( + val (close, framework) = withScalaNativeBridge.apply().apply(_.getFramework( nativeLink().toIO, forkEnv() ++ Map( diff --git a/scalanativelib/src/mill/scalanativelib/worker/ScalaNativeWorker.scala b/scalanativelib/src/mill/scalanativelib/worker/ScalaNativeWorker.scala index b4579b2b1064..35b4de1359cc 100644 --- a/scalanativelib/src/mill/scalanativelib/worker/ScalaNativeWorker.scala +++ b/scalanativelib/src/mill/scalanativelib/worker/ScalaNativeWorker.scala @@ -34,6 +34,6 @@ private[scalanativelib] class ScalaNativeWorker(jobs: Int) private[scalanativelib] object ScalaNativeWorkerExternalModule extends mill.define.ExternalModule { def scalaNativeWorker: Worker[ScalaNativeWorker] = - Task.Worker { new ScalaNativeWorker(Task.ctx.asInstanceOf[mill.api.Ctx.Jobs].jobs) } + Task.Worker { new ScalaNativeWorker(Task.ctx().asInstanceOf[mill.api.Ctx.Jobs].jobs) } lazy val millDiscover: Discover = Discover[this.type] }