diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/CompileClient.scala | 5 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/CompileSocket.scala | 6 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/ScriptRunner.scala | 6 |
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 => |