DirectoryLookup

trait DirectoryLookup[FileEntryType <: ClassRepresentation] extends EfficientClassPath

A trait allowing to look for classpath entries in directories. It provides common logic for classes handling class and source files. It makes use of the fact that in the case of nested directories it's easy to find a file when we have a name of a package. It abstracts over the file representation to work with both JFile and AbstractFile.

trait ClassPath
class Object
trait Matchable
class Any

Type members

Types

type F

Value members

Abstract methods

protected def emptyFiles: Array[F]
protected def getName(f: F): String
protected def getSubDir(dirName: String): Option[F]
protected def isMatchingFile(f: F): Boolean
protected def isPackage(f: F): Boolean
protected def listChildren(dir: F, filter: Option[F => Boolean]): Array[F]
protected def toAbstractFile(f: F): AbstractFile

Concrete methods

protected def files(inPackage: PackageName): Seq[FileEntryType]
override def list(inPackage: PackageName, onPackageEntry: PackageEntry => Unit, onClassesAndSources: ClassRepresentation => Unit): Unit
Definition Classes

Inherited methods

The whole classpath in the form of one String.

The whole classpath in the form of one String.

Inherited from
ClassPath

The whole sourcepath in the form of one String.

The whole sourcepath in the form of one String.

Inherited from
ClassPath
def asURLs: Seq[URL]
Inherited from
ClassPath
final def classes(inPackage: String): Seq[ClassFileEntry]
Inherited from
ClassPath

Returns the class file and / or source file for a given external name, e.g., "java.lang.String". If there is both a class file and source file, the compiler can decide whether to read the class file or compile the source file.

Returns the class file and / or source file for a given external name, e.g., "java.lang.String". If there is both a class file and source file, the compiler can decide whether to read the class file or compile the source file.

Internally this seems to be used only by ScriptRunner, but only to call .isDefined. That could probably be implemented differently.

Externally, it is used by sbt's compiler interface: https://github.com/sbt/sbt/blob/v0.13.15/compile/interface/src/main/scala/xsbt/CompilerInterface.scala#L249 Jason has some improvements for that in the works (https://github.com/scala/bug/issues/10289#issuecomment-310022699)

Inherited from
ClassPath

Returns the classfile for an external name, e.g., "java.lang.String". This method does not return source files.

Returns the classfile for an external name, e.g., "java.lang.String". This method does not return source files.

This method is used by the classfile parser. When parsing a Java class, its own inner classes are entered with a ClassfileLoader that parses the classfile returned by this method. It is also used in the backend, by the inliner, to obtain the bytecode when inlining from the classpath. It's also used by scalap.

Inherited from
ClassPath
final def hasPackage(pkg: String): Boolean
Inherited from
ClassPath
override def list(inPackage: PackageName): ClassPathEntries
Definition Classes
Inherited from
EfficientClassPath
final def list(inPackage: String): ClassPathEntries
Inherited from
ClassPath
final def packages(inPackage: String): Seq[PackageEntry]
Inherited from
ClassPath
final def sources(inPackage: String): Seq[SourceFileEntry]
Inherited from
ClassPath

Deprecated and Inherited methods

@deprecated("use asClassPathString instead of this one", "2.11.5")
Deprecated
Inherited from
ClassPath

Abstract fields

val dir: F