diff --git a/main/define/src/mill/define/Discover.scala b/main/define/src/mill/define/Discover.scala index 16ca239f548..6dcca7e8f67 100644 --- a/main/define/src/mill/define/Discover.scala +++ b/main/define/src/mill/define/Discover.scala @@ -16,15 +16,38 @@ import scala.reflect.macros.blackbox * the `T.command` methods we find. This mapping from `Class[_]` to `MainData` * can then be used later to look up the `MainData` for any module. */ -case class Discover[T] private (val value: Map[ - Class[_], - (Seq[String], Seq[mainargs.MainData[_, _]]) -]) +case class Discover[T] private ( + value: Map[ + Class[_], + (Seq[String], Seq[mainargs.MainData[_, _]]) + ], + dummy: Int = 0 /* avoid conflict with Discover.apply(value: Map) below*/ +) { + @deprecated("Binary compatibility shim", "Mill 0.11.4") + private[define] def this(value: Map[Class[_], Seq[mainargs.MainData[_, _]]]) = + this(value.view.mapValues((Nil, _)).toMap) + // Explicit copy, as we also need to provide an override for bin-compat reasons + def copy[T]( + value: Map[ + Class[_], + (Seq[String], Seq[mainargs.MainData[_, _]]) + ] = value, + dummy: Int = dummy /* avoid conflict with Discover.apply(value: Map) below*/ + ): Discover[T] = new Discover[T](value, dummy) + @deprecated("Binary compatibility shim", "Mill 0.11.4") + private[define] def copy[T](value: Map[Class[_], Seq[mainargs.MainData[_, _]]]): Discover[T] = { + new Discover[T](value.view.mapValues((Nil, _)).toMap, dummy) + } +} object Discover { def apply2[T](value: Map[Class[_], (Seq[String], Seq[mainargs.MainData[_, _]])]): Discover[T] = new Discover[T](value) + @deprecated("Binary compatibility shim", "Mill 0.11.4") + def apply[T](value: Map[Class[_], Seq[mainargs.MainData[_, _]]]): Discover[T] = + new Discover[T](value.view.mapValues((Nil, _)).toMap) + def apply[T]: Discover[T] = macro Router.applyImpl[T] private class Router(val ctx: blackbox.Context) extends mainargs.Macros(ctx) { diff --git a/main/resolve/src/mill/resolve/Resolve.scala b/main/resolve/src/mill/resolve/Resolve.scala index ebbcad0dae1..4dbf6eb7336 100644 --- a/main/resolve/src/mill/resolve/Resolve.scala +++ b/main/resolve/src/mill/resolve/Resolve.scala @@ -227,11 +227,11 @@ trait Resolve[T] { nullCommandDefaults: Boolean ): Either[String, Seq[T]] = { val rootResolved = ResolveCore.Resolved.Module(Segments(), rootModule.getClass) - val allPossibleNames = rootModule.millDiscover.value.values.flatMap(_._1).toSet val resolved = ResolveCore.resolve(rootModule, sel.value.toList, rootResolved, Segments()) match { case ResolveCore.Success(value) => Right(value) case ResolveCore.NotFound(segments, found, next, possibleNexts) => + val allPossibleNames = rootModule.millDiscover.value.values.flatMap(_._1).toSet Left(ResolveNotFoundHandler(sel, segments, found, next, possibleNexts, allPossibleNames)) case ResolveCore.Error(value) => Left(value) }