summaryrefslogtreecommitdiff
path: root/scalalib
diff options
context:
space:
mode:
authorMinghao Liu <molikto@gmail.com>2019-03-08 17:45:17 +0800
committerTobias Roeser <le.petit.fou@web.de>2019-03-11 10:46:46 +0100
commit981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa (patch)
treea60407ddc0af1f0f15aaa0b0db180e32573782f9 /scalalib
parent2780582bcfd73c8888a7bfa198351e413b684459 (diff)
downloadmill-981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa.tar.gz
mill-981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa.tar.bz2
mill-981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa.zip
Update ZincWorkerImpl.scala
Diffstat (limited to 'scalalib')
-rw-r--r--scalalib/worker/src/ZincWorkerImpl.scala27
1 files changed, 20 insertions, 7 deletions
diff --git a/scalalib/worker/src/ZincWorkerImpl.scala b/scalalib/worker/src/ZincWorkerImpl.scala
index a6360d8f..a127e96e 100644
--- a/scalalib/worker/src/ZincWorkerImpl.scala
+++ b/scalalib/worker/src/ZincWorkerImpl.scala
@@ -85,17 +85,30 @@ class ZincWorkerImpl(compilerBridge: Either[
val sourceFolder = mill.api.IO.unpackZip(srcJars(scalaVersion, scalaOrganization))(workingDir)
val classloader = mill.api.ClassLoader.create(compilerJars.map(_.toURI.toURL), null)(ctx0)
- val compilerMain = classloader.loadClass(
- if (isDotty(scalaVersion)) "dotty.tools.dotc.Main"
- else "scala.tools.nsc.Main"
- )
+
+ val sources = os.walk(sourceFolder.path).filter(a => a.ext == "scala" || a.ext == "java")
+
val argsArray = Array[String](
"-d", compiledDest.toString,
"-classpath", (compilerJars ++ compilerBridgeClasspath).mkString(File.pathSeparator)
- ) ++ os.walk(sourceFolder.path).filter(_.ext == "scala").map(_.toString)
+ ) ++ sources.map(_.toString)
+
+ val allScala = sources.forall(_.ext == "scala")
+ val allJava = sources.forall(_.ext == "java")
+ if (allJava) {
+ import scala.sys.process._
+ (Seq("javac") ++ argsArray).!
+ } else if (allScala) {
+ val compilerMain = classloader.loadClass(
+ if (isDotty(scalaVersion)) "dotty.tools.dotc.Main"
+ else "scala.tools.nsc.Main"
+ )
+ compilerMain.getMethod("process", classOf[Array[String]])
+ .invoke(null, argsArray)
+ } else {
+ throw new IllegalArgumentException("Currently not implemented case.")
+ }
- compilerMain.getMethod("process", classOf[Array[String]])
- .invoke(null, argsArray)
}
compiledDest
}