summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/CompileClient.scala5
-rw-r--r--src/compiler/scala/tools/nsc/CompileSocket.scala6
-rw-r--r--src/compiler/scala/tools/nsc/ScriptRunner.scala6
3 files changed, 14 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/CompileClient.scala b/src/compiler/scala/tools/nsc/CompileClient.scala
index a9051c5767..552c4b3644 100644
--- a/src/compiler/scala/tools/nsc/CompileClient.scala
+++ b/src/compiler/scala/tools/nsc/CompileClient.scala
@@ -95,13 +95,18 @@ object CompileClient {
val in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
out.println(CompileSocket.getPassword(socket.getPort()))
out.println(args.mkString("", "\0", ""))
+ var sawerror = false
var fromServer = in.readLine()
while (fromServer != null) {
+ if(CompileSocket.errorPattern.matcher(fromServer).matches)
+ sawerror = true
System.out.println(fromServer)
fromServer = in.readLine()
}
in.close()
out.close()
socket.close()
+
+ System.exit(if (sawerror) 1 else 0)
}
}
diff --git a/src/compiler/scala/tools/nsc/CompileSocket.scala b/src/compiler/scala/tools/nsc/CompileSocket.scala
index 18b64fdf2b..1c600a1a38 100644
--- a/src/compiler/scala/tools/nsc/CompileSocket.scala
+++ b/src/compiler/scala/tools/nsc/CompileSocket.scala
@@ -34,6 +34,12 @@ object CompileSocket {
/** The class name of the scala compile server */
private val serverClass = "scala.tools.nsc.CompileServer"
+ /** A regular expression for checking compiler output for errors */
+ val errorRegex = ".*errors? found.*"
+
+ /** A Pattern object for checking compiler output for errors */
+ val errorPattern = java.util.regex.Pattern.compile(errorRegex)
+
private def fatal(msg: String) = {
System.err.println(msg)
exit(1)
diff --git a/src/compiler/scala/tools/nsc/ScriptRunner.scala b/src/compiler/scala/tools/nsc/ScriptRunner.scala
index ba85dadd75..dad15d4960 100644
--- a/src/compiler/scala/tools/nsc/ScriptRunner.scala
+++ b/src/compiler/scala/tools/nsc/ScriptRunner.scala
@@ -126,7 +126,7 @@ object ScriptRunner {
def wrappedScript(filename: String): SourceFile = {
val preamble =
new SourceFile("<script preamble>",
- ("package scalascript\n" +
+ ("package $scalascript\n" +
"object Main {\n" +
" def main(argv: Array[String]): Unit = {\n" +
" val args = argv;\n").toCharArray)
@@ -185,7 +185,7 @@ object ScriptRunner {
var fromServer = in.readLine()
while (fromServer != null) {
System.out.println(fromServer)
- if (fromServer.matches(".*errors? found.*"))
+ if (CompileSocket.errorPattern.matcher(fromServer).matches)
compok = false
fromServer = in.readLine()
@@ -296,7 +296,7 @@ object ScriptRunner {
try {
ObjectRunner.run(
classpath,
- "scalascript.Main",
+ "$scalascript.Main",
scriptArgs.toArray)
} catch {
case e:InvocationTargetException =>