diff options
author | Paul Phillips <paulp@improving.org> | 2011-01-27 20:25:55 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-01-27 20:25:55 +0000 |
commit | 1c537ba1b3b68007e613a6c90d27cdae3f262c77 (patch) | |
tree | 9b80f6f3488cb9f50639f467dcf8fc88a9c2772c /src/compiler/scala/tools/nsc/util/ClassPath.scala | |
parent | ba82b29b929f47ae345dbd32e5b6200bf68c231e (diff) | |
download | scala-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.
Diffstat (limited to 'src/compiler/scala/tools/nsc/util/ClassPath.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/util/ClassPath.scala | 24 |
1 files changed, 13 insertions, 11 deletions
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 |