@@ -15,7 +15,8 @@ object CodeGen {
1515 allScriptCode : Map [os.Path , String ],
1616 targetDest : os.Path ,
1717 enclosingClasspath : Seq [os.Path ],
18- millTopLevelProjectRoot : os.Path
18+ millTopLevelProjectRoot : os.Path ,
19+ isScala3 : Boolean
1920 ): Unit = {
2021 for (scriptSource <- scriptSources) {
2122 val scriptPath = scriptSource.path
@@ -100,7 +101,8 @@ object CodeGen {
100101 pkgLine,
101102 aliasImports,
102103 scriptCode,
103- markerComment
104+ markerComment,
105+ isScala3
104106 )
105107 }
106108
@@ -118,15 +120,17 @@ object CodeGen {
118120 pkgLine : String ,
119121 aliasImports : String ,
120122 scriptCode : String ,
121- markerComment : String
123+ markerComment : String ,
124+ isScala3 : Boolean
122125 ) = {
123126 val segments = scriptFolderPath.relativeTo(projectRoot).segments
124127
125128 val prelude = topBuildPrelude(
126129 segments,
127130 scriptFolderPath,
128131 enclosingClasspath,
129- millTopLevelProjectRoot
132+ millTopLevelProjectRoot,
133+ isScala3
130134 )
131135
132136 val instrument = new ObjectDataInstrument (scriptCode)
@@ -182,10 +186,17 @@ object CodeGen {
182186 segments : Seq [String ],
183187 scriptFolderPath : os.Path ,
184188 enclosingClasspath : Seq [os.Path ],
185- millTopLevelProjectRoot : os.Path
189+ millTopLevelProjectRoot : os.Path ,
190+ isScala3 : Boolean
186191 ): String = {
192+ val scala3imports = if isScala3 then {
193+ // (Scala 3) package is not part of implicit scope
194+ s """ import _root_.mill.main.TokenReaders.given, _root_.mill.api.JsonFormatters.given """
195+ } else {
196+ " "
197+ }
187198 s """ import _root_.mill.runner.MillBuildRootModule
188- |import _root_.mill.main.TokenReaders.given // (Scala 3) package is not part of implicit scope
199+ | $scala3imports
189200 |@_root_.scala.annotation.nowarn
190201 |object MillMiscInfo extends MillBuildRootModule.MillMiscInfo(
191202 | ${enclosingClasspath.map(p => literalize(p.toString))},
@@ -216,11 +227,13 @@ object CodeGen {
216227
217228 // User code needs to be put in a separate class for proper submodule
218229 // object initialization due to https://github.com/scala/scala3/issues/21444
219- s """ object $wrapperObjectName extends $wrapperObjectName{
230+ s """ object $wrapperObjectName extends $wrapperObjectName {
220231 | $childAliases
221- | override lazy val millDiscover: _root_.mill.define.Discover = _root_.mill.define.Discover[this.type]
222232 |}
223- |abstract class $wrapperObjectName $extendsClause { """ .stripMargin
233+ |abstract class $wrapperObjectName $extendsClause {
234+ |override lazy val millDiscover: _root_.mill.define.Discover = {
235+ | _root_.mill.define.Discover[this.type]
236+ |} """ .stripMargin
224237
225238 }
226239
0 commit comments