diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/io/VirtualDirectory.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/io/VirtualDirectory.scala | 39 |
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(); |