blob: ca6f385da1e6e719a07c7216db05454fca800221 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/* __ *\
** ________ ___ / / ___ Scala Ant Tasks **
** / __/ __// _ | / / / _ | (c) 2005-2009, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
package scala.tools.ant.sabbus
import java.io.File
import scala.tools.nsc._
import scala.tools.nsc.reporters.ConsoleReporter
class ForeignCompiler {
private var argsBuffer: Array[String] = null
def args: Array[String] = argsBuffer
def args_=(a: Array[String]): Unit = {
argsBuffer = a
nsc
}
private val error: (String => Nothing) = { msg => throw new Exception(msg) }
private def settings = new scala.tools.nsc.Settings(error)
private lazy val reporter = new ConsoleReporter(settings)
private lazy val nsc: Global = {
try {
val command = new CompilerCommand(args.toList, settings, error, false)
new Global(command.settings, reporter)
}
catch {
case ex @ FatalError(msg) =>
throw new Exception(msg, ex)
}
}
def compile(files: Array[File]): Int = {
val command = new CompilerCommand(files.toList.map(_.toString), settings, error, true)
(new nsc.Run) compile command.files
reporter.ERROR.count << 16 | reporter.WARNING.count
}
}
|