summaryrefslogtreecommitdiff
path: root/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala
diff options
context:
space:
mode:
Diffstat (limited to 'scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala')
-rw-r--r--scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala18
1 files changed, 15 insertions, 3 deletions
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 = {