summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/CompileServer.scala7
-rw-r--r--src/compiler/scala/tools/nsc/CompileSocket.scala16
-rw-r--r--src/compiler/scala/tools/nsc/Interpreter.scala9
-rw-r--r--src/compiler/scala/tools/nsc/ScriptRunner.scala58
4 files changed, 38 insertions, 52 deletions
diff --git a/src/compiler/scala/tools/nsc/CompileServer.scala b/src/compiler/scala/tools/nsc/CompileServer.scala
index 7cd4be214a..82d2eb04b9 100644
--- a/src/compiler/scala/tools/nsc/CompileServer.scala
+++ b/src/compiler/scala/tools/nsc/CompileServer.scala
@@ -55,7 +55,7 @@ class StandardCompileServer extends SocketServer
}
override def timeout() {
- if (!compileSocket.portFile(port).file.exists())
+ if (!compileSocket.portFile(port).exists)
fatal("port file no longer exists; skipping cleanup")
}
@@ -142,11 +142,10 @@ class StandardCompileServer extends SocketServer
}
/** A directory holding redirected output */
- private val redirectDir = File(compileSocket.tmpDir) / "output-redirects"
- redirectDir.mkdirs
+ private val redirectDir = (compileSocket.tmpDir / "output-redirects").createDirectory
private def redirect(setter: PrintStream => Unit, filename: String): Unit =
- setter(new PrintStream(redirectDir / filename bufferedOutput()))
+ setter(new PrintStream((redirectDir / filename).createFile.bufferedOutput()))
def main(args: Array[String]) {
redirect(System.setOut, "scala-compile-server-out.log")
diff --git a/src/compiler/scala/tools/nsc/CompileSocket.scala b/src/compiler/scala/tools/nsc/CompileSocket.scala
index fb4d4c50dc..eeec1e7bf4 100644
--- a/src/compiler/scala/tools/nsc/CompileSocket.scala
+++ b/src/compiler/scala/tools/nsc/CompileSocket.scala
@@ -12,7 +12,7 @@ import java.util.regex.Pattern
import java.net._
import java.security.SecureRandom
-import scala.io.File
+import scala.io.{ File, Path }
import scala.util.control.Exception.catching
// class CompileChannel { }
@@ -59,8 +59,7 @@ class CompileSocket {
/** A temporary directory to use */
val tmpDir = {
val udir = Option(Properties.userName) getOrElse "shared"
- val f = (File(Properties.tmpDir) / "scala-devel" / udir).file
- f.mkdirs()
+ val f = (Path(Properties.tmpDir) / "scala-devel" / udir).createDirectory()
if (f.isDirectory && f.canWrite) {
info("[Temp directory: " + f + "]")
@@ -70,8 +69,7 @@ class CompileSocket {
}
/* A directory holding port identification files */
- val portsDir = File(tmpDir) / dirName
- portsDir.mkdirs
+ val portsDir = (tmpDir / dirName).createDirectory
/** Maximum number of polls for an available port */
private val MaxAttempts = 100
@@ -103,11 +101,11 @@ class CompileSocket {
}
/** The port identification file */
- def portFile(port: Int) = portsDir / port.toString
+ def portFile(port: Int) = portsDir / File(port.toString)
/** Poll for a server port number; return -1 if none exists yet */
private def pollPort(): Int =
- portsDir.iterator.toList match {
+ portsDir.list.toList match {
case Nil => -1
case p :: xs =>
xs forall (_.delete())
@@ -141,7 +139,7 @@ class CompileSocket {
try file writeAll List(secret) catch {
case e @ (_: FileNotFoundException | _: SecurityException) =>
- fatal("Cannot create file: %s".format(file.absolutePath))
+ fatal("Cannot create file: %s".format(file.path))
}
}
@@ -214,7 +212,7 @@ class CompileSocket {
// allow some time for the server to start up
def check = {
Thread sleep 100
- ff.file.length()
+ ff.length
}
if (Iterator continually check take 50 find (_ > 0) isEmpty) {
ff.delete()
diff --git a/src/compiler/scala/tools/nsc/Interpreter.scala b/src/compiler/scala/tools/nsc/Interpreter.scala
index 3f44bcdf9b..d34c4a8640 100644
--- a/src/compiler/scala/tools/nsc/Interpreter.scala
+++ b/src/compiler/scala/tools/nsc/Interpreter.scala
@@ -957,15 +957,6 @@ object Interpreter {
intLoop.closeInterpreter
}
- /** Delete a directory tree recursively. Use with care! */
- private[nsc] def deleteRecursively(path: File): Unit =
- if (path.exists) {
- if (path.isDirectory)
- path.listFiles foreach deleteRecursively
-
- path.delete
- }
-
/** Heuristically strip interpreter wrapper prefixes
* from an interpreter output string.
*/
diff --git a/src/compiler/scala/tools/nsc/ScriptRunner.scala b/src/compiler/scala/tools/nsc/ScriptRunner.scala
index 0a7b0aeeec..f99ea24031 100644
--- a/src/compiler/scala/tools/nsc/ScriptRunner.scala
+++ b/src/compiler/scala/tools/nsc/ScriptRunner.scala
@@ -12,7 +12,7 @@ import java.io.{
FileReader, InputStreamReader, PrintWriter, FileWriter,
IOException
}
-import scala.io.File
+import scala.io.{ Directory, File, Path }
// import scala.io.arm.ManagedResource
import java.io.{ File => JFile }
import java.lang.reflect.InvocationTargetException
@@ -71,12 +71,12 @@ object ScriptRunner
}
/** Choose a jar filename to hold the compiled version of a script. */
- private def jarFileFor(scriptFile: String): JFile = {
+ private def jarFileFor(scriptFile: String): File = {
val name =
if (scriptFile endsWith ".jar") scriptFile
else scriptFile + ".jar"
- File(name).file
+ File(name)
}
def copyStreams(in: InputStream, out: OutputStream) = {
@@ -93,22 +93,22 @@ object ScriptRunner
/** Try to create a jar file out of all the contents
* of the directory <code>sourcePath</code>.
*/
- private def tryMakeJar(jarFile: JFile, sourcePath: JFile) = {
- def addFromDir(jar: JarOutputStream, dir: JFile, prefix: String) {
- def addFileToJar(entry: JFile) = {
- jar putNextEntry new JarEntry(prefix + entry.getName)
- copyStreams(new FileInputStream(entry), jar)
+ private def tryMakeJar(jarFile: File, sourcePath: Directory) = {
+ def addFromDir(jar: JarOutputStream, dir: Directory, prefix: String) {
+ def addFileToJar(entry: File) = {
+ jar putNextEntry new JarEntry(prefix + entry.name)
+ copyStreams(entry.inputStream, jar)
jar.closeEntry
}
- dir.listFiles foreach { entry =>
- if (entry.isFile) addFileToJar(entry)
- else addFromDir(jar, entry, prefix + entry.getName + "/")
+ dir.list foreach { entry =>
+ if (entry.isFile) addFileToJar(entry.toFile)
+ else addFromDir(jar, entry.toDirectory, prefix + entry.name + "/")
}
}
try {
- val jar = new JarOutputStream(File(jarFile).outputStream())
+ val jar = new JarOutputStream(jarFile.outputStream())
addFromDir(jar, sourcePath, "")
jar.close
}
@@ -118,7 +118,7 @@ object ScriptRunner
}
/** Read the entire contents of a file as a String. */
- private def contentsOfFile(filename: String) = File(filename).toSource().mkString
+ private def contentsOfFile(filename: String) = File(filename).slurp()
/** Find the length of the header in the specified file, if
* there is one. The header part starts with "#!" or "::#!"
@@ -249,16 +249,14 @@ object ScriptRunner
scriptFile: String)
(handler: String => Boolean): Boolean =
{
- import Interpreter.deleteRecursively
-
/** Compiles the script file, and returns the directory with the compiled
* class files, if the compilation succeeded.
*/
- def compile: Option[JFile] = {
- val compiledPath = File tempdir "scalascript"
+ def compile: Option[Directory] = {
+ val compiledPath = Directory makeTemp "scalascript"
// delete the directory after the user code has finished
- addShutdownHook(deleteRecursively(compiledPath.file))
+ addShutdownHook(compiledPath.deleteRecursively())
settings.outdir.value = compiledPath.path
@@ -269,37 +267,37 @@ object ScriptRunner
val wrapped = wrappedScript(scriptMain(settings), scriptFile, compiler getSourceFile _)
cr compileSources List(wrapped)
- if (reporter.hasErrors) None else Some(compiledPath.file)
+ if (reporter.hasErrors) None else Some(compiledPath)
}
- else if (compileWithDaemon(settings, scriptFile)) Some(compiledPath.file)
+ else if (compileWithDaemon(settings, scriptFile)) Some(compiledPath)
else None
}
if (settings.savecompiled.value) {
- val jarFile = File(jarFileFor(scriptFile))
+ val jarFile = jarFileFor(scriptFile)
def jarOK = jarFile.canRead && (jarFile isFresher File(scriptFile))
def recompile() = {
- jarFile.delete
+ jarFile.delete()
compile match {
case Some(compiledPath) =>
- tryMakeJar(jarFile.file, compiledPath)
+ tryMakeJar(jarFile, compiledPath)
if (jarOK) {
- deleteRecursively(compiledPath)
- handler(jarFile.absolutePath)
+ compiledPath.deleteRecursively()
+ handler(jarFile.toAbsolute.path)
}
// jar failed; run directly from the class files
- else handler(compiledPath.getPath)
+ else handler(compiledPath.path)
case _ => false
}
}
- if (jarOK) handler(jarFile.absolutePath) // pre-compiled jar is current
- else recompile() // jar old - recompile the script.
+ if (jarOK) handler(jarFile.toAbsolute.path) // pre-compiled jar is current
+ else recompile() // jar old - recompile the script.
}
// don't use a cache jar at all--just use the class files
- else compile map (cp => handler(cp.getPath)) getOrElse false
+ else compile map (cp => handler(cp.path)) getOrElse false
}
/** Run a script after it has been compiled
@@ -368,7 +366,7 @@ object ScriptRunner
command: String,
scriptArgs: List[String]) : Boolean =
{
- val scriptFile = File.tempfile("scalacmd", ".scala")
+ val scriptFile = File.makeTemp("scalacmd", ".scala")
// save the command to the file
scriptFile writeAll List(command)