Dotty Documentation

0.6.0-bin-SNAPSHOT

case class VirtualDirectoryClassPath
extends Object with ClassPath with DirectoryLookup with NoSourcePaths with Product

[-] Constructors

VirtualDirectoryClassPath ( dir: VirtualDirectory )

[-] Members

[+] type F = AbstractFile
[+] val dir : VirtualDirectory
[+] def asClassPathStrings : Seq [ String ]
[+] def asURLs : Seq [ URL ]
[+] def classes ( inPackage: String ) : Seq [ ClassFileEntry ]
[+] protected def createFileEntry ( file: AbstractFile ) : ClassFileEntryImpl
[+] protected def emptyFiles : Array [ AbstractFile ]
[+] override def findClass ( className: String ) : Option [ ClassRepresentation ]

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)

[+] def findClassFile ( className: String ) : Option [ AbstractFile ]

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.

[+] def getName ( f: AbstractFile ) : String
[+] protected def getSubDir ( packageDirName: String ) : Option [ AbstractFile ]
[+] protected def isMatchingFile ( f: AbstractFile ) : Boolean
[+] def isPackage ( f: AbstractFile ) : Boolean
[+] protected def listChildren ( dir: AbstractFile , filter: Option [ AbstractFile => Boolean ] ) : Array [ F ]
[+] private final def lookupPath ( base: AbstractFile ) ( pathParts: Seq [ String ] , directory: Boolean ) : AbstractFile
[+] def toAbstractFile ( f: AbstractFile ) : AbstractFile