Skip to content

Commit e0a2c93

Browse files
authored
Avoid calling Discover[T] macro for sub-folder root modules (#3656)
They already get processed as part of the root `build.mill`'s `Discover[T]` macro call, so no need to duplicate the work
1 parent 51f1429 commit e0a2c93

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

main/src/mill/main/RootModule.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,7 @@ object RootModule {
6060
fileName = millFile0,
6161
enclosing = Caller(null)
6262
)
63-
) with Module {
64-
def millDiscover: Discover
65-
}
63+
) with Module {}
6664

6765
@deprecated
6866
abstract class Foreign(foreign0: Option[Segments])(implicit

runner/src/mill/runner/CodeGen.scala

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,20 @@ object CodeGen {
161161
newScriptCode = objectData.name.applyTo(newScriptCode, wrapperObjectName)
162162
newScriptCode = objectData.obj.applyTo(newScriptCode, "abstract class")
163163

164+
val millDiscover =
165+
if (segments.nonEmpty) ""
166+
else
167+
"""@_root_.scala.annotation.nowarn
168+
| override lazy val millDiscover: _root_.mill.define.Discover = _root_.mill.define.Discover[this.type]""".stripMargin
169+
164170
s"""$pkgLine
165171
|$aliasImports
166172
|$prelude
167173
|$markerComment
168174
|$newScriptCode
169175
|object $wrapperObjectName extends $wrapperObjectName {
170176
| $childAliases
171-
| @_root_.scala.annotation.nowarn
172-
| override lazy val millDiscover: _root_.mill.define.Discover = _root_.mill.define.Discover[this.type]
177+
| $millDiscover
173178
|}""".stripMargin
174179
case None =>
175180
s"""$pkgLine
@@ -216,16 +221,20 @@ object CodeGen {
216221
s"extends _root_.mill.runner.MillBuildRootModule() "
217222
}
218223
} else {
219-
220224
s"extends _root_.mill.main.RootModule.Subfolder "
221225
}
222226

227+
val millDiscover =
228+
if (segments.nonEmpty) ""
229+
else
230+
"""@_root_.scala.annotation.nowarn
231+
| override lazy val millDiscover: _root_.mill.define.Discover = _root_.mill.define.Discover[this.type]""".stripMargin
232+
223233
// User code needs to be put in a separate class for proper submodule
224234
// object initialization due to https://github.com/scala/scala3/issues/21444
225235
s"""object $wrapperObjectName extends $wrapperObjectName{
226236
| $childAliases
227-
| @_root_.scala.annotation.nowarn
228-
| override lazy val millDiscover: _root_.mill.define.Discover = _root_.mill.define.Discover[this.type]
237+
| $millDiscover
229238
|}
230239
|abstract class $wrapperObjectName $extendsClause {""".stripMargin
231240

0 commit comments

Comments
 (0)