t

xsbti

VirtualFile

trait VirtualFile extends VirtualFileRef

VirtualFile is an abstraction for file-like objects. Unlike java.io.File or java.nio.file.Path that are tied to filesystem-related capabilities, VirtualFile is designed to be a less-capable object with identity, content reading, and content hashing. See also VirtualFileRef

One of the goals of this virtual file (as opposed to a concrete file) is to abstract from the machine and user specifics. Previous Zinc's Analysis metadata files stored file paths using java.io.File. This impeded them from being shared across machines without pre- and post-processing them appropriately.

To create a VirtualFile you may use a FileConverter, such as MappedFileConverter. MappedFileConverter internally stores the root paths to the working directory, Coursier's cache, etc..., and it will create a VirtualFile with an id that looks like ${BASE}/src/main/example/A.scala.

A VirtualFile can also be created with plain Strings to represent the content, without any "real" files.

OK, but how does the compiler compile these?

See IncrementalCompiler.java. At the top layer of Zinc, we are passing in the source files as a sequence of VirtualFiles. The files then gets wrapped by a datatype called AbstractZincFile, which extends scala.reflect.io.AbstractFile, which the compiler is able to compile.

Linear Supertypes
VirtualFileRef, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. VirtualFile
  2. VirtualFileRef
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def contentHash(): Long
  2. abstract def id(): String

    Returns unique identifier for the file.

    Returns unique identifier for the file. For Java compilation it needs to contain the path structure matching the package name for example com/acme/Foo.java.

    It also must end with the same value as name(), Java files must end with ".java", and Scala files must end with ".scala".

    Definition Classes
    VirtualFileRef
  3. abstract def input(): InputStream
  4. abstract def name(): String

    Returns "file name" for the file.

    Returns "file name" for the file. Java files must end with ".java", and Scala files must end with ".scala".

    Definition Classes
    VirtualFileRef
  5. abstract def names(): Array[String]
    Definition Classes
    VirtualFileRef

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from VirtualFileRef

Inherited from AnyRef

Inherited from Any

Ungrouped