summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/io/VirtualDirectory.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/io/VirtualDirectory.scala')
-rw-r--r--src/compiler/scala/tools/nsc/io/VirtualDirectory.scala39
1 files changed, 11 insertions, 28 deletions
diff --git a/src/compiler/scala/tools/nsc/io/VirtualDirectory.scala b/src/compiler/scala/tools/nsc/io/VirtualDirectory.scala
index 16381bbe6e..0d394fdddd 100644
--- a/src/compiler/scala/tools/nsc/io/VirtualDirectory.scala
+++ b/src/compiler/scala/tools/nsc/io/VirtualDirectory.scala
@@ -1,10 +1,11 @@
/* NSC -- new Scala compiler
* Copyright 2005-2009 LAMP/EPFL
*/
-// $Id$
+
package scala.tools.nsc
package io
-import scala.collection.{mutable=>mut}
+
+import scala.collection.mutable
/**
* An in-memory directory.
@@ -24,9 +25,7 @@ extends AbstractFile {
def container = maybeContainer.get
def isDirectory = true
var lastModified: Long = System.currentTimeMillis
- private def updateLastModified {
- lastModified = System.currentTimeMillis
- }
+
override def file = null
override def input = error("directories cannot be read")
override def output = error("directories cannot be written")
@@ -47,44 +46,28 @@ extends AbstractFile {
def lookupNameUnchecked(name: String, directory: Boolean): AbstractFile =
throw new UnsupportedOperationException()
- private val files = mut.Map.empty[String, AbstractFile]
+ private val files = mutable.Map.empty[String, AbstractFile]
// the toList is so that the directory may continue to be
// modified while its elements are iterated
def iterator = files.valuesIterator.toList.iterator
- override def lookupName(name: String, directory: Boolean): AbstractFile = {
- files.get(name) match {
- case None => null
- case Some(file) =>
- if (file.isDirectory == directory)
- file
- else
- null
- }
- }
+ override def lookupName(name: String, directory: Boolean): AbstractFile =
+ files get name filter (_.isDirectory == directory) orNull
- override def fileNamed(name: String): AbstractFile = {
- val existing = lookupName(name, false)
- if (existing == null) {
+ override def fileNamed(name: String): AbstractFile =
+ Option(lookupName(name, false)) getOrElse {
val newFile = new VirtualFile(name, path+'/'+name)
files(name) = newFile
newFile
- } else {
- existing
}
- }
- override def subdirectoryNamed(name: String): AbstractFile = {
- val existing = lookupName(name, true)
- if (existing == null) {
+ override def subdirectoryNamed(name: String): AbstractFile =
+ Option(lookupName(name, true)) getOrElse {
val dir = new VirtualDirectory(name, Some(this))
files(name) = dir
dir
- } else {
- existing
}
- }
def clear() {
files.clear();