summaryrefslogtreecommitdiff
path: root/scalajslib
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-03-19 21:05:34 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2018-03-19 21:05:34 -0700
commit4263195436228ab5e4e781c1b1ec3090add59e35 (patch)
treea3bf1696d1d7371caf92e30d0df8c5d3db9c45b9 /scalajslib
parent1c507efbc4ce13ad39a056c4c77eb280f0b224e7 (diff)
downloadmill-4263195436228ab5e4e781c1b1ec3090add59e35.tar.gz
mill-4263195436228ab5e4e781c1b1ec3090add59e35.tar.bz2
mill-4263195436228ab5e4e781c1b1ec3090add59e35.zip
avoid showing a stack trace if the ScalaJSModule gives a linking error, since the stdout will have the necessary information for debugging anyway
Diffstat (limited to 'scalajslib')
-rw-r--r--scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala15
-rw-r--r--scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala18
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSBridge.scala7
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala5
4 files changed, 34 insertions, 11 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 80f84c3d..6f14db19 100644
--- a/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala
+++ b/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala
@@ -4,6 +4,7 @@ package bridge
import java.io.File
+import mill.eval.Result
import org.scalajs.core.tools.io.IRFileCache.IRContainer
import org.scalajs.core.tools.io._
import org.scalajs.core.tools.jsdep.ResolvedJSDependency
@@ -14,7 +15,12 @@ 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, moduleKind: ModuleKind): Unit = {
+ def link(sources: Array[File],
+ libraries: Array[File],
+ dest: File,
+ main: String,
+ fullOpt: Boolean,
+ moduleKind: ModuleKind) = {
val semantics = fullOpt match {
case true => Semantics.Defaults.optimized
case false => Semantics.Defaults
@@ -35,7 +41,12 @@ class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge {
val destFile = AtomicWritableFileVirtualJSFile(dest)
val logger = new ScalaConsoleLogger
val initializer = Option(main).map { cls => ModuleInitializer.mainMethodWithArgs(cls, "main") }
- linker.link(sourceSJSIRs ++ jarSJSIRs, initializer.toSeq, destFile, logger)
+ try {
+ linker.link(sourceSJSIRs ++ jarSJSIRs, initializer.toSeq, destFile, logger)
+ Result.Success(dest)
+ }catch {case e: org.scalajs.core.tools.linker.LinkingException =>
+ Result.Failure(e.getMessage)
+ }
}
def run(config: NodeJSConfig, linkedFile: File): Unit = {
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 796fe212..534d45bf 100644
--- a/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala
+++ b/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala
@@ -4,15 +4,21 @@ package bridge
import java.io.File
+import mill.eval.Result
import org.scalajs.core.tools.io._
-import org.scalajs.core.tools.linker.{ModuleInitializer, StandardLinker, Semantics, ModuleKind => ScalaJSModuleKind}
+import org.scalajs.core.tools.linker.{ModuleInitializer, Semantics, StandardLinker, 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, moduleKind: ModuleKind): Unit = {
+ def link(sources: Array[File],
+ libraries: Array[File],
+ dest: File,
+ main: String,
+ fullOpt: Boolean,
+ moduleKind: ModuleKind) = {
val semantics = fullOpt match {
case true => Semantics.Defaults.optimized
case false => Semantics.Defaults
@@ -34,7 +40,13 @@ class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge {
val destFile = AtomicWritableFileVirtualJSFile(dest)
val logger = new ScalaConsoleLogger
val initializer = Option(main).map { cls => ModuleInitializer.mainMethodWithArgs(cls, "main") }
- linker.link(sourceIRs ++ libraryIRs, initializer.toSeq, destFile, logger)
+
+ try {
+ linker.link(sourceIRs ++ libraryIRs, initializer.toSeq, destFile, logger)
+ Result.Success(dest)
+ }catch {case e: org.scalajs.core.tools.linker.LinkingException =>
+ Result.Failure(e.getMessage)
+ }
}
def run(config: NodeJSConfig, linkedFile: File): Unit = {
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
index 59ed6450..c9947e88 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
@@ -5,6 +5,7 @@ import java.net.URLClassLoader
import ammonite.ops.Path
import mill.define.Discover
+import mill.eval.Result
import mill.util.Ctx
import mill.{Agg, T}
@@ -50,7 +51,7 @@ class ScalaJSWorker {
main: Option[String],
fullOpt: Boolean,
moduleKind: ModuleKind)
- (implicit ctx: Ctx.Home): Unit = {
+ (implicit ctx: Ctx.Home): Result[Path] = {
bridge(toolsClasspath).link(
sources.items.map(_.toIO).toArray,
libraries.items.map(_.toIO).toArray,
@@ -58,7 +59,7 @@ class ScalaJSWorker {
main.orNull,
fullOpt,
moduleKind
- )
+ ).map(Path(_))
}
def run(toolsClasspath: Agg[Path], config: NodeJSConfig, linkedFile: File)
@@ -82,7 +83,7 @@ trait ScalaJSBridge {
dest: File,
main: String,
fullOpt: Boolean,
- moduleKind: ModuleKind): Unit
+ moduleKind: ModuleKind): Result[File]
def run(config: NodeJSConfig, linkedFile: File): Unit
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
index 099b8bc2..3b566e13 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
@@ -117,7 +117,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
runClasspath: Agg[PathRef],
mainClass: Option[String],
mode: OptimizeMode,
- moduleKind: ModuleKind)(implicit ctx: Ctx): PathRef = {
+ moduleKind: ModuleKind)(implicit ctx: Ctx): Result[PathRef] = {
val outputPath = ctx.dest / "out.js"
mkdir(ctx.dest)
@@ -137,8 +137,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
mainClass,
mode == FullOpt,
moduleKind
- )
- PathRef(outputPath)
+ ).map(PathRef(_))
}
override def scalacPluginIvyDeps = T{