summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2010-01-11 08:55:42 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2010-01-11 08:55:42 +0000
commit60d5bbdf4aafb8a5d49bafc7db2b4481b94ec4f9 (patch)
tree658412612ccb1ee4a053fde8019f3c8690c44bcd /src/compiler
parent9772ebe8ecfcbffb78b862a79320f40c9c26e7f1 (diff)
downloadscala-60d5bbdf4aafb8a5d49bafc7db2b4481b94ec4f9.tar.gz
scala-60d5bbdf4aafb8a5d49bafc7db2b4481b94ec4f9.tar.bz2
scala-60d5bbdf4aafb8a5d49bafc7db2b4481b94ec4f9.zip
speed up ClassPath.findClass. review by community
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/util/ClassPath.scala32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/compiler/scala/tools/nsc/util/ClassPath.scala b/src/compiler/scala/tools/nsc/util/ClassPath.scala
index a906aa40c3..a6b0a1244d 100644
--- a/src/compiler/scala/tools/nsc/util/ClassPath.scala
+++ b/src/compiler/scala/tools/nsc/util/ClassPath.scala
@@ -90,7 +90,7 @@ object ClassPath {
}
/**
- * A represents classes which can be loaded with a ClassfileLoader/MSILTypeLoader
+ * Represents classes which can be loaded with a ClassfileLoader/MSILTypeLoader
* and / or a SourcefileLoader.
*/
case class ClassRep[T](binary: Option[T], source: Option[AbstractFile]) {
@@ -124,9 +124,9 @@ abstract class ClassPath[T] {
* The short name of the package (without prefix)
*/
def name: String
- def classes: List[ClassRep[T]]
- def packages: List[ClassPath[T]]
- def sourcepaths: List[AbstractFile]
+ val classes: List[ClassRep[T]]
+ val packages: List[ClassPath[T]]
+ val sourcepaths: List[AbstractFile]
/**
* Find a ClassRep given a class name of the form "package.subpackage.ClassName".
@@ -150,7 +150,7 @@ abstract class ClassPath[T] {
class SourcePath[T](dir: AbstractFile) extends ClassPath[T] {
def name = dir.name
- def classes = {
+ lazy val classes = {
val cls = new ListBuffer[ClassRep[T]]
for (f <- dir.iterator) {
if (!f.isDirectory && ClassPath.validSourceFile(f.name))
@@ -159,7 +159,7 @@ class SourcePath[T](dir: AbstractFile) extends ClassPath[T] {
cls.toList
}
- def packages = {
+ lazy val packages = {
val pkg = new ListBuffer[SourcePath[T]]
for (f <- dir.iterator) {
if (f.isDirectory && ClassPath.validPackage(f.name))
@@ -168,7 +168,7 @@ class SourcePath[T](dir: AbstractFile) extends ClassPath[T] {
pkg.toList
}
- def sourcepaths: List[AbstractFile] = List(dir)
+ val sourcepaths: List[AbstractFile] = List(dir)
override def toString() = "sourcepath: "+ dir.toString()
}
@@ -179,7 +179,7 @@ class SourcePath[T](dir: AbstractFile) extends ClassPath[T] {
class DirectoryClassPath(dir: AbstractFile) extends ClassPath[AbstractFile] {
def name = dir.name
- def classes = {
+ lazy val classes = {
val cls = new ListBuffer[ClassRep[AbstractFile]]
for (f <- dir.iterator) {
if (!f.isDirectory && ClassPath.validClassFile(f.name))
@@ -188,7 +188,7 @@ class DirectoryClassPath(dir: AbstractFile) extends ClassPath[AbstractFile] {
cls.toList
}
- def packages = {
+ lazy val packages = {
val pkg = new ListBuffer[DirectoryClassPath]
for (f <- dir.iterator) {
if (f.isDirectory && ClassPath.validPackage(f.name))
@@ -197,7 +197,7 @@ class DirectoryClassPath(dir: AbstractFile) extends ClassPath[AbstractFile] {
pkg.toList
}
- def sourcepaths: List[AbstractFile] = Nil
+ val sourcepaths: List[AbstractFile] = Nil
override def toString() = "directory classpath: "+ dir.toString()
}
@@ -230,7 +230,7 @@ class AssemblyClassPath(types: Array[MSILType], namespace: String) extends Class
if (types(m).FullName.startsWith(namespace)) m else types.length
}
- def classes = {
+ lazy val classes = {
val cls = new ListBuffer[ClassRep[MSILType]]
var i = first
while (i < types.length && types(i).Namespace.startsWith(namespace)) {
@@ -242,7 +242,7 @@ class AssemblyClassPath(types: Array[MSILType], namespace: String) extends Class
cls.toList
}
- def packages = {
+ lazy val packages = {
val nsSet = new MutHashSet[String]
var i = first
while (i < types.length && types(i).Namespace.startsWith(namespace)) {
@@ -260,7 +260,7 @@ class AssemblyClassPath(types: Array[MSILType], namespace: String) extends Class
yield new AssemblyClassPath(types, ns)
}
- def sourcepaths: List[AbstractFile] = Nil
+ val sourcepaths: List[AbstractFile] = Nil
override def toString() = "assembly classpath "+ namespace
}
@@ -273,7 +273,7 @@ abstract class MergedClassPath[T] extends ClassPath[T] {
def name = entries.head.name
- def classes: List[ClassRep[T]] = {
+ lazy val classes: List[ClassRep[T]] = {
val cls = new ListBuffer[ClassRep[T]]
for (e <- entries; c <- e.classes) {
val name = c.name
@@ -291,7 +291,7 @@ abstract class MergedClassPath[T] extends ClassPath[T] {
cls.toList
}
- def packages: List[ClassPath[T]] = {
+ lazy val packages: List[ClassPath[T]] = {
val pkg = new ListBuffer[ClassPath[T]]
for (e <- entries; p <- e.packages) {
val name = p.name
@@ -305,7 +305,7 @@ abstract class MergedClassPath[T] extends ClassPath[T] {
pkg.toList
}
- def sourcepaths: List[AbstractFile] = entries.flatMap(_.sourcepaths)
+ lazy val sourcepaths: List[AbstractFile] = entries.flatMap(_.sourcepaths)
private def addPackage(to: ClassPath[T], pkg: ClassPath[T]) = to match {
case cp: MergedClassPath[_] =>