summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-01-27 20:25:55 +0000
committerPaul Phillips <paulp@improving.org>2011-01-27 20:25:55 +0000
commit1c537ba1b3b68007e613a6c90d27cdae3f262c77 (patch)
tree9b80f6f3488cb9f50639f467dcf8fc88a9c2772c
parentba82b29b929f47ae345dbd32e5b6200bf68c231e (diff)
downloadscala-1c537ba1b3b68007e613a6c90d27cdae3f262c77.tar.gz
scala-1c537ba1b3b68007e613a6c90d27cdae3f262c77.tar.bz2
scala-1c537ba1b3b68007e613a6c90d27cdae3f262c77.zip
Changing some code to not use collect on top of...
Changing some code to not use collect on top of a possibly changing filesystem. Anonymous partial functions used with collect risk match errors if guard results ever change, due to the guard being run twice (isDefinedAt and then apply). No review.
-rw-r--r--src/compiler/scala/tools/nsc/io/AbstractFile.scala6
-rw-r--r--src/compiler/scala/tools/nsc/util/ClassPath.scala24
2 files changed, 17 insertions, 13 deletions
diff --git a/src/compiler/scala/tools/nsc/io/AbstractFile.scala b/src/compiler/scala/tools/nsc/io/AbstractFile.scala
index e0eb61486f..77c7ad0147 100644
--- a/src/compiler/scala/tools/nsc/io/AbstractFile.scala
+++ b/src/compiler/scala/tools/nsc/io/AbstractFile.scala
@@ -53,8 +53,10 @@ object AbstractFile {
* @param file ...
* @return ...
*/
- def getURL(url: URL): AbstractFile =
- Option(url) collect { case url: URL if Path.isJarOrZip(url.getPath) => ZipArchive fromURL url } orNull
+ def getURL(url: URL): AbstractFile = {
+ if (url == null || !Path.isJarOrZip(url.getPath)) null
+ else ZipArchive fromURL url
+ }
}
/**
diff --git a/src/compiler/scala/tools/nsc/util/ClassPath.scala b/src/compiler/scala/tools/nsc/util/ClassPath.scala
index f0f3716782..0a8c54f297 100644
--- a/src/compiler/scala/tools/nsc/util/ClassPath.scala
+++ b/src/compiler/scala/tools/nsc/util/ClassPath.scala
@@ -8,8 +8,7 @@ package scala.tools.nsc
package util
import java.net.URL
-import scala.collection.{ mutable, immutable }
-import mutable.ListBuffer
+import scala.collection.mutable.ListBuffer
import io.{ File, Directory, Path, AbstractFile }
import scala.tools.util.StringOps.splitWhere
import Path.isJarOrZip
@@ -289,15 +288,16 @@ class SourcePath[T](dir: AbstractFile, val context: ClassPathContext[T]) extends
def asClasspathString = dir.path
val sourcepaths: List[AbstractFile] = List(dir)
- lazy val classes: List[ClassRep] = dir collect {
- case f if !f.isDirectory && validSourceFile(f.name) => ClassRep(None, Some(f))
+ lazy val classes: List[ClassRep] = dir flatMap { f =>
+ if (f.isDirectory || !validSourceFile(f.name)) Nil
+ else List(ClassRep(None, Some(f)))
} toList
- lazy val packages: List[SourcePath[T]] = dir collect {
- case f if f.isDirectory && validPackage(f.name) => new SourcePath[T](f, context)
+ lazy val packages: List[SourcePath[T]] = dir flatMap { f =>
+ if (f.isDirectory && validPackage(f.name)) List(new SourcePath[T](f, context))
+ else Nil
} toList
-
override def toString() = "sourcepath: "+ dir.toString()
}
@@ -311,12 +311,14 @@ class DirectoryClassPath(val dir: AbstractFile, val context: ClassPathContext[Ab
def asClasspathString = dir.path
val sourcepaths: List[AbstractFile] = Nil
- lazy val classes: List[ClassRep] = dir collect {
- case f if !f.isDirectory && validClassFile(f.name) => ClassRep(Some(f), None)
+ lazy val classes: List[ClassRep] = dir flatMap { f =>
+ if (f.isDirectory || !validClassFile(f.name)) Nil
+ else List(ClassRep(Some(f), None))
} toList
- lazy val packages: List[DirectoryClassPath] = dir collect {
- case f if f.isDirectory && validPackage(f.name) => new DirectoryClassPath(f, context)
+ lazy val packages: List[DirectoryClassPath] = dir flatMap { f =>
+ if (f.isDirectory && validPackage(f.name)) List(new DirectoryClassPath(f, context))
+ else Nil
} toList
override def toString() = "directory classpath: "+ dir