diff options
author | Minghao Liu <molikto@gmail.com> | 2019-03-08 17:45:17 +0800 |
---|---|---|
committer | Tobias Roeser <le.petit.fou@web.de> | 2019-03-11 10:46:46 +0100 |
commit | 981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa (patch) | |
tree | a60407ddc0af1f0f15aaa0b0db180e32573782f9 | |
parent | 2780582bcfd73c8888a7bfa198351e413b684459 (diff) | |
download | mill-981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa.tar.gz mill-981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa.tar.bz2 mill-981c4e1d6919e3a4ceea6a4c63335d7b69d9e8aa.zip |
Update ZincWorkerImpl.scala
-rw-r--r-- | scalalib/worker/src/ZincWorkerImpl.scala | 27 |
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 } |