summaryrefslogtreecommitdiff
path: root/scalajslib
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-03-18 10:35:57 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2018-03-18 10:35:57 -0700
commit3715c7bfb88de8daa86cd663d22057ec776cedcc (patch)
tree0a85083bcdb27867110e33c05c15ac13ae2865a9 /scalajslib
parent350a3115afca590bee6311dbed4a657fe9cca375 (diff)
parent0063444b422e317b9ee68c789f9b3224dcf28825 (diff)
downloadmill-3715c7bfb88de8daa86cd663d22057ec776cedcc.tar.gz
mill-3715c7bfb88de8daa86cd663d22057ec776cedcc.tar.bz2
mill-3715c7bfb88de8daa86cd663d22057ec776cedcc.zip
Merge branch 'master' of github.com:lihaoyi/mill
Diffstat (limited to 'scalajslib')
-rw-r--r--scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala14
-rw-r--r--scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala14
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSBridge.scala19
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala17
-rw-r--r--scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala28
-rw-r--r--scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala4
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())