Skip to content

Commit 2c12e99

Browse files
committed
Downgrade Scala Native default version to 0.4.17 for Mill export
1 parent 62c4ecd commit 2c12e99

File tree

8 files changed

+25
-11
lines changed

8 files changed

+25
-11
lines changed

build.sc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ trait Core extends ScalaCliCrossSbtModule
433433
| def ammoniteVersion = "${Deps.ammonite.dep.version}"
434434
| def millVersion = "${InternalDeps.Versions.mill}"
435435
| def lefouMillwRef = "${InternalDeps.Versions.lefouMillwRef}"
436+
| def maxScalaNativeForMillExport = "${Deps.Versions.maxScalaNativeForMillExport}"
436437
|
437438
| def scalafmtOrganization = "${Deps.scalafmtCli.dep.module.organization.value}"
438439
| def scalafmtName = "${Deps.scalafmtCli.dep.module.name.value}"

modules/cli/src/main/scala/scala/cli/commands/export0/Export.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,15 @@ object Export extends ScalaCommand[ExportOptions] {
148148
val inputs = options.shared.inputs(args.all).orExit(logger)
149149
CurrentParams.workspaceOpt = Some(inputs.workspace)
150150
val baseOptions =
151-
initialBuildOptions.copy(mainClass = options.mainClass.mainClass.filter(_.nonEmpty))
151+
initialBuildOptions
152+
.copy(
153+
scalaNativeOptions = initialBuildOptions.scalaNativeOptions.copy(
154+
maxDefaultNativeVersions =
155+
if shouldExportToMill then List(Constants.maxScalaNativeForMillExport)
156+
else Nil
157+
),
158+
mainClass = options.mainClass.mainClass.filter(_.nonEmpty)
159+
)
152160

153161
val (sourcesMain, optionsMain0) =
154162
prepareBuild(

modules/cli/src/main/scala/scala/cli/exportCmd/MillProjectDescriptor.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,8 @@ final case class MillProjectDescriptor(
7070
)
7171
}
7272

73-
private def scalaNativeSettings(options: ScalaNativeOptions): MillProject = {
74-
val scalaNativeVersion = Some(options.version.getOrElse(Constants.scalaNativeVersion))
75-
MillProject(scalaNativeVersion = scalaNativeVersion)
76-
}
73+
private def scalaNativeSettings(options: ScalaNativeOptions): MillProject =
74+
MillProject(scalaNativeVersion = Some(options.finalVersion))
7775

7876
private def dependencySettings(
7977
mainOptions: BuildOptions,

modules/integration/src/test/scala/scala/cli/integration/ExportCommonTestDefinitions.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ trait ExportCommonTestDefinitions { _: ScalaCliSuite & TestScalaVersionArgs =>
9696
test("Scala.js") {
9797
simpleTest(ExportTestProjects.jsTest(actualScalaVersion))
9898
}
99-
test("Scala Native") {
100-
simpleTest(ExportTestProjects.nativeTest(actualScalaVersion))
101-
}
10299
test("Ensure test framework NPE is not thrown when depending on logback") {
103100
logbackBugCase()
104101
}

modules/integration/src/test/scala/scala/cli/integration/ExportMillTestDefinitions.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,9 @@ abstract class ExportMillTestDefinitions extends ScalaCliSuite
9696
test("JVM with compiler plugin") {
9797
jvmTestCompilerPlugin()
9898
}
99+
100+
test("Scala Native") {
101+
// FIXME this should be adjusted to Scala Native 0.5.x syntax once Mill gets support for it
102+
simpleTest(ExportTestProjects.nativeTest(actualScalaVersion, useNative04Syntax = true))
103+
}
99104
}

modules/integration/src/test/scala/scala/cli/integration/ExportSbtTestDefinitions.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,8 @@ abstract class ExportSbtTestDefinitions extends ScalaCliSuite
3838

3939
override val runMainArgs: Seq[String] = Seq("run")
4040
override val runTestsArgs: Seq[String] = Seq("test")
41+
42+
test("Scala Native") {
43+
simpleTest(ExportTestProjects.nativeTest(actualScalaVersion))
44+
}
4145
}

modules/integration/src/test/scala/scala/cli/integration/ExportTestProjects.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ object ExportTestProjects {
9696
TestInputs(os.rel / "Test.scala" -> testFile)
9797
}
9898

99-
def nativeTest(scalaVersion: String): TestInputs = {
99+
def nativeTest(scalaVersion: String, useNative04Syntax: Boolean = false): TestInputs = {
100100
val nl = "\\n"
101101
val testFile =
102102
if (scalaVersion.startsWith("3."))
@@ -109,7 +109,7 @@ object ExportTestProjects {
109109
|object Test:
110110
| def main(args: Array[String]): Unit =
111111
| val message = "Hello from " + "exported Scala CLI project" + "$nl"
112-
| Zone {
112+
| Zone {${if (useNative04Syntax) " implicit z =>" else ""}
113113
| val io = StdioHelpers(stdio)
114114
| io.printf(c"%s", toCString(message))
115115
| }
@@ -124,7 +124,7 @@ object ExportTestProjects {
124124
|object Test {
125125
| def main(args: Array[String]): Unit = {
126126
| val message = "Hello from " + "exported Scala CLI project" + "$nl"
127-
| Zone.acquire { implicit z =>
127+
| Zone${if (useNative04Syntax) "" else ".acquire"} { implicit z =>
128128
| val io = StdioHelpers(stdio)
129129
| io.printf(c"%s", toCString(message))
130130
| }

project/deps.sc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ object Deps {
102102
def maxScalaNativeForToolkit = scalaNative04
103103
def maxScalaNativeForTypelevelToolkit = scalaNative04
104104
def maxScalaNativeForScalaPy = scalaNative04
105+
def maxScalaNativeForMillExport = scalaNative04
105106
def scalaPackager = "0.1.29"
106107
def signingCli = "0.2.3"
107108
def signingCliJvmVersion = 17

0 commit comments

Comments
 (0)