diff options
Diffstat (limited to 'scalajslib')
6 files changed, 64 insertions, 32 deletions
diff --git a/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala b/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala index 5f7bd38b..80f84c3d 100644 --- a/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala +++ b/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala @@ -7,19 +7,27 @@ import java.io.File import org.scalajs.core.tools.io.IRFileCache.IRContainer import org.scalajs.core.tools.io._ import org.scalajs.core.tools.jsdep.ResolvedJSDependency -import org.scalajs.core.tools.linker.{ModuleInitializer, StandardLinker, Semantics} +import org.scalajs.core.tools.linker.{ModuleInitializer, StandardLinker, Semantics, ModuleKind => ScalaJSModuleKind} import org.scalajs.core.tools.logging.ScalaConsoleLogger import org.scalajs.jsenv._ import org.scalajs.jsenv.nodejs._ import org.scalajs.testadapter.TestAdapter class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge { - def link(sources: Array[File], libraries: Array[File], dest: File, main: String, fullOpt: Boolean): Unit = { + def link(sources: Array[File], libraries: Array[File], dest: File, main: String, fullOpt: Boolean, moduleKind: ModuleKind): Unit = { val semantics = fullOpt match { case true => Semantics.Defaults.optimized case false => Semantics.Defaults } - val config = StandardLinker.Config().withOptimizer(fullOpt).withClosureCompilerIfAvailable(fullOpt).withSemantics(semantics) + val scalaJSModuleKind = moduleKind match { + case ModuleKind.NoModule => ScalaJSModuleKind.NoModule + case ModuleKind.CommonJSModule => ScalaJSModuleKind.CommonJSModule + } + val config = StandardLinker.Config() + .withOptimizer(fullOpt) + .withClosureCompilerIfAvailable(fullOpt) + .withSemantics(semantics) + .withModuleKind(scalaJSModuleKind) val linker = StandardLinker(config) val sourceSJSIRs = sources.map(new FileVirtualScalaJSIRFile(_)) val jars = libraries.map(jar => IRContainer.Jar(new FileVirtualBinaryFile(jar) with VirtualJarFile)) diff --git a/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala b/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala index 53986f1b..796fe212 100644 --- a/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala +++ b/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala @@ -5,19 +5,27 @@ package bridge import java.io.File import org.scalajs.core.tools.io._ -import org.scalajs.core.tools.linker.{ModuleInitializer, StandardLinker, Semantics} +import org.scalajs.core.tools.linker.{ModuleInitializer, StandardLinker, Semantics, ModuleKind => ScalaJSModuleKind} import org.scalajs.core.tools.logging.ScalaConsoleLogger import org.scalajs.jsenv.ConsoleJSConsole import org.scalajs.jsenv.nodejs._ import org.scalajs.testadapter.TestAdapter class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge { - def link(sources: Array[File], libraries: Array[File], dest: File, main: String, fullOpt: Boolean): Unit = { + def link(sources: Array[File], libraries: Array[File], dest: File, main: String, fullOpt: Boolean, moduleKind: ModuleKind): Unit = { val semantics = fullOpt match { case true => Semantics.Defaults.optimized case false => Semantics.Defaults } - val config = StandardLinker.Config().withOptimizer(fullOpt).withClosureCompilerIfAvailable(fullOpt).withSemantics(semantics) + val scalaJSModuleKind = moduleKind match { + case ModuleKind.NoModule => ScalaJSModuleKind.NoModule + case ModuleKind.CommonJSModule => ScalaJSModuleKind.CommonJSModule + } + val config = StandardLinker.Config() + .withOptimizer(fullOpt) + .withClosureCompilerIfAvailable(fullOpt) + .withSemantics(semantics) + .withModuleKind(scalaJSModuleKind) val linker = StandardLinker(config) val cache = new IRFileCache().newCache val sourceIRs = sources.map(FileVirtualScalaJSIRFile) diff --git a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala index 20e6542c..507d8af7 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala @@ -12,6 +12,12 @@ sealed trait OptimizeMode object FastOpt extends OptimizeMode object FullOpt extends OptimizeMode +sealed trait ModuleKind +object ModuleKind{ + object NoModule extends ModuleKind + object CommonJSModule extends ModuleKind +} + class ScalaJSWorker { private var scalaInstanceCache = Option.empty[(Long, ScalaJSBridge)] @@ -21,8 +27,8 @@ class ScalaJSWorker { scalaInstanceCache match { case Some((sig, bridge)) if sig == classloaderSig => bridge case _ => - val cl = new URLClassLoader( - toolsClasspath.map(_.toIO.toURI.toURL).toArray, + val cl = mill.util.ClassLoader.create( + toolsClasspath.map(_.toIO.toURI.toURL).toVector, getClass.getClassLoader ) val bridge = cl @@ -40,13 +46,15 @@ class ScalaJSWorker { libraries: Agg[Path], dest: File, main: Option[String], - fullOpt: Boolean): Unit = { + fullOpt: Boolean, + moduleKind: ModuleKind): Unit = { bridge(toolsClasspath).link( sources.items.map(_.toIO).toArray, libraries.items.map(_.toIO).toArray, dest, main.orNull, - fullOpt + fullOpt, + moduleKind ) } @@ -68,7 +76,8 @@ trait ScalaJSBridge { libraries: Array[File], dest: File, main: String, - fullOpt: Boolean): Unit + fullOpt: Boolean, + moduleKind: ModuleKind): Unit def run(config: NodeJSConfig, linkedFile: File): Unit diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala index 948b13df..92c071c2 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala @@ -72,7 +72,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => toolsClasspath(), runClasspath(), finalMainClassOpt().toOption, - FastOpt + FastOpt, + moduleKind() ) } @@ -82,7 +83,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => toolsClasspath(), runClasspath(), finalMainClassOpt().toOption, - FullOpt + FullOpt, + moduleKind() ) } @@ -114,7 +116,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => toolsClasspath: Agg[PathRef], runClasspath: Agg[PathRef], mainClass: Option[String], - mode: OptimizeMode)(implicit ctx: Ctx.Dest): PathRef = { + mode: OptimizeMode, + moduleKind: ModuleKind)(implicit ctx: Ctx.Dest): PathRef = { val outputPath = ctx.dest / "out.js" mkdir(ctx.dest) @@ -132,7 +135,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => libraries, outputPath.toIO, mainClass, - mode == FullOpt + mode == FullOpt, + moduleKind ) PathRef(outputPath) } @@ -159,6 +163,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => override def platformSuffix = s"_sjs${artifactScalaJSVersion()}" def nodeJSConfig = T { NodeJSConfig() } + + def moduleKind: T[ModuleKind] = T { ModuleKind.NoModule } } trait TestScalaJSModule extends ScalaJSModule with TestModule { @@ -177,7 +183,8 @@ trait TestScalaJSModule extends ScalaJSModule with TestModule { toolsClasspath(), scalaJSTestDeps() ++ runClasspath(), None, - FastOpt + FastOpt, + moduleKind() ) } diff --git a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala index 2429a189..cfdcdd1f 100644 --- a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala +++ b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala @@ -102,7 +102,7 @@ object HelloJSWorldTests extends TestSuite { 'fromScratch_2124_0622 - testCompileFromScratch("2.12.4", "0.6.22") 'fromScratch_2123_0622 - testCompileFromScratch("2.12.3", "0.6.22") - 'fromScratch_2118_0622 - testCompileFromScratch("2.11.8", "0.6.22") + 'fromScratch_2118_0622 - TestUtil.disableInJava9OrAbove(testCompileFromScratch("2.11.8", "0.6.22")) 'fromScratch_2124_100M2 - testCompileFromScratch("2.12.4", "1.0.0-M2") } @@ -119,16 +119,16 @@ object HelloJSWorldTests extends TestSuite { } 'fullOpt - { - 'run_2124_0622 - testRun("2.12.4", "0.6.22", FullOpt) - 'run_2123_0622 - testRun("2.12.3", "0.6.22", FullOpt) - 'run_2118_0622 - testRun("2.11.8", "0.6.22", FullOpt) - 'run_2124_100M2 - testRun("2.12.4", "1.0.0-M2", FullOpt) + 'run_2124_0622 - TestUtil.disableInJava9OrAbove(testRun("2.12.4", "0.6.22", FullOpt)) + 'run_2123_0622 - TestUtil.disableInJava9OrAbove(testRun("2.12.3", "0.6.22", FullOpt)) + 'run_2118_0622 - TestUtil.disableInJava9OrAbove(testRun("2.11.8", "0.6.22", FullOpt)) + 'run_2124_100M2 - TestUtil.disableInJava9OrAbove(testRun("2.12.4", "1.0.0-M2", FullOpt)) } 'fastOpt - { - 'run_2124_0622 - testRun("2.12.4", "0.6.22", FastOpt) - 'run_2123_0622 - testRun("2.12.3", "0.6.22", FastOpt) - 'run_2118_0622 - testRun("2.11.8", "0.6.22", FastOpt) - 'run_2124_100M2 - testRun("2.12.4", "1.0.0-M2", FastOpt) + 'run_2124_0622 - TestUtil.disableInJava9OrAbove(testRun("2.12.4", "0.6.22", FastOpt)) + 'run_2123_0622 - TestUtil.disableInJava9OrAbove(testRun("2.12.3", "0.6.22", FastOpt)) + 'run_2118_0622 - TestUtil.disableInJava9OrAbove(testRun("2.11.8", "0.6.22", FastOpt)) + 'run_2124_100M2 - TestUtil.disableInJava9OrAbove(testRun("2.12.4", "1.0.0-M2", FastOpt)) } 'jar - { 'containsSJSIRs - { @@ -192,12 +192,12 @@ object HelloJSWorldTests extends TestSuite { ) } - 'utest_2118_0622 - checkUtest("2.11.8", "0.6.22") + 'utest_2118_0622 - TestUtil.disableInJava9OrAbove(checkUtest("2.11.8", "0.6.22")) 'utest_2124_0622 - checkUtest("2.12.4", "0.6.22") - 'utest_2118_100M2 - checkUtest("2.11.8", "1.0.0-M2") + 'utest_2118_100M2 - TestUtil.disableInJava9OrAbove(checkUtest("2.11.8", "1.0.0-M2")) 'utest_2124_100M2 - checkUtest("2.12.4", "1.0.0-M2") - 'scalaTest_2118_0622 - checkScalaTest("2.11.8", "0.6.22") + 'scalaTest_2118_0622 - TestUtil.disableInJava9OrAbove(checkScalaTest("2.11.8", "0.6.22")) 'scalaTest_2124_0622 - checkScalaTest("2.12.4", "0.6.22") // No scalatest artifact for scala.js 1.0.0-M2 published yet // 'scalaTest_2118_100M2 - checkScalaTest("2.11.8", "1.0.0-M2") @@ -222,9 +222,9 @@ object HelloJSWorldTests extends TestSuite { } 'run - { - 'run_2118_0622 - checkRun("2.11.8", "0.6.22") + 'run_2118_0622 - TestUtil.disableInJava9OrAbove(checkRun("2.11.8", "0.6.22")) 'run_2124_0622 - checkRun("2.12.4", "0.6.22") - 'run_2118_100M2 - checkRun("2.11.8", "1.0.0-M2") + 'run_2118_100M2 - TestUtil.disableInJava9OrAbove(checkRun("2.11.8", "1.0.0-M2")) 'run_2124_100M2 - checkRun("2.12.4", "1.0.0-M2") } } diff --git a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala b/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala index e2364f38..37429038 100644 --- a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala +++ b/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala @@ -54,8 +54,8 @@ object MultiModuleTests extends TestSuite { ) } - 'fastOpt - checkOpt(FastOpt) - 'fullOpt - checkOpt(FullOpt) + 'fastOpt - TestUtil.disableInJava9OrAbove(checkOpt(FastOpt)) + 'fullOpt - TestUtil.disableInJava9OrAbove(checkOpt(FullOpt)) 'test - { val Right(((_, testResults), evalCount)) = evaluator(MultiModule.client.test.test()) |