Skip to content

Commit 2ba4f60

Browse files
committed
WIP
1 parent 017c9db commit 2ba4f60

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/compiler/scala/tools/nsc/classpath/DirectoryClassPath.scala

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import java.nio.file.{FileSystems, Files}
1818
import java.util
1919

2020
import scala.reflect.io.{AbstractFile, PlainFile, PlainNioFile}
21-
import scala.tools.nsc.util.{ClassPath, ClassRepresentation}
21+
import scala.tools.nsc.util.{ClassPath, ClassRepresentation, EfficientClassPath, EfficientClassPathCallBack}
2222
import FileUtils._
2323
import scala.collection.JavaConverters._
2424
import scala.reflect.internal.JDK9Reflectors
@@ -32,7 +32,7 @@ import scala.tools.nsc.classpath.PackageNameUtils.{packageContains, separatePkgA
3232
* when we have a name of a package.
3333
* It abstracts over the file representation to work with both JFile and AbstractFile.
3434
*/
35-
trait DirectoryLookup[FileEntryType <: ClassRepresentation] extends ClassPath {
35+
trait DirectoryLookup[FileEntryType <: ClassRepresentation] extends EfficientClassPath {
3636
type F
3737

3838
val dir: F
@@ -75,6 +75,19 @@ trait DirectoryLookup[FileEntryType <: ClassRepresentation] extends ClassPath {
7575
files.map(f => createFileEntry(toAbstractFile(f)))
7676
}
7777

78+
override private[nsc] def list(inPackage: PackageName, callback: EfficientClassPathCallBack): Unit = {
79+
val dirForPackage = getDirectory(inPackage)
80+
dirForPackage match {
81+
case None =>
82+
case Some(directory) =>
83+
for (file <- listChildren(directory)) {
84+
if (isPackage(file))
85+
callback.packageEntry(PackageEntryImpl(inPackage.entryName(getName(file))))
86+
else if (isMatchingFile(file))
87+
callback.classesAndSources(createFileEntry(toAbstractFile(file)))
88+
}
89+
}
90+
}
7891
private[nsc] def list(inPackage: PackageName): ClassPathEntries = {
7992
val dirForPackage = getDirectory(inPackage)
8093
val files: Array[F] = dirForPackage match {

0 commit comments

Comments
 (0)