ExternalLookup

sbt.internal.inc.ExternalLookup
trait ExternalLookup extends Lookup

Defines a hook interface that IDEs or build tools can mock to modify the way Zinc invalidates the incremental compiler. These hooks operate at a high-level of abstraction and only allow to modify the inputs of the initial change detection.

Attributes

Graph
Supertypes
trait Lookup
class Object
trait Matchable
class Any
Known subtypes

Members list

Value members

Abstract methods

def changedBinaries(previousAnalysis: CompileAnalysis): Option[Set[VirtualFileRef]]

Used to provide information from external tools into sbt (e.g. IDEs)

Used to provide information from external tools into sbt (e.g. IDEs)

Attributes

Returns

None if is unable to determine what was changed, changes otherwise

def changedSources(previousAnalysis: CompileAnalysis): Option[Changes[VirtualFileRef]]

Used to provide information from external tools into sbt (e.g. IDEs)

Used to provide information from external tools into sbt (e.g. IDEs)

Attributes

Returns

None if is unable to determine what was changed, changes otherwise

def lookupAnalyzedClass(binaryClassName: String, file: Option[VirtualFileRef]): Option[AnalyzedClass]

Find the external AnalyzedClass (from another analysis) given a class name and, if available, the jar file (or class file) the class comes from.

Find the external AnalyzedClass (from another analysis) given a class name and, if available, the jar file (or class file) the class comes from.

Attributes

Returns

The AnalyzedClass associated with the given class name, if one is found. None => Found class somewhere outside of project. No analysis possible. Some(analyzed) if analyzed.provenance.isEmpty => Couldn't find it. Some(analyzed) => good

def removedProducts(previousAnalysis: CompileAnalysis): Option[Set[VirtualFileRef]]

Used to provide information from external tools into sbt (e.g. IDEs)

Used to provide information from external tools into sbt (e.g. IDEs)

Attributes

Returns

None if is unable to determine what was changed, changes otherwise

def shouldDoIncrementalCompilation(changedClasses: Set[String], analysis: CompileAnalysis): Boolean

Used to provide information from external tools into sbt (e.g. IDEs)

Used to provide information from external tools into sbt (e.g. IDEs)

Attributes

Returns

API changes

Concrete methods

override def getChangedBinaries(previousAnalysis: CompileAnalysis): Optional[Set[VirtualFileRef]]

Attributes

Definition Classes
Lookup
override def getChangedSources(previousAnalysis: CompileAnalysis): Optional[Changes[VirtualFileRef]]

Attributes

Definition Classes
Lookup
override def getRemovedProducts(previousAnalysis: CompileAnalysis): Optional[Set[VirtualFileRef]]

Attributes

Definition Classes
Lookup
def shouldDoEarlyOutput(analysis: CompileAnalysis): Boolean

Used to override whether we should proceed with making an early output.

Used to override whether we should proceed with making an early output.

By default we do not make an early output in the presence of any macros because macro expansion (in a downstream subproject) requires the macro implementation to be present in bytecode form, rather than just just a pickle-containing JAR.

If you're careful micromanaging the separation of macro implementations (e.g. def impl(c: Context) = ...) from macro definitions (e.g. def foo: Unit = macro Foo.impl) you can safely override this.

Attributes

override def shouldDoIncrementalCompilation(changedClasses: Set[String], previousAnalysis: CompileAnalysis): Boolean

Attributes

Definition Classes
Lookup

Inherited methods

def hashClasspath(x$0: Array[VirtualFile]): Optional[Array[FileHash]]

Attributes

Inherited from:
Lookup