If we recompile a source file that contains a macro definition then we always assume that it's api has changed.
Maps class-based dependencies to source dependencies using classes
relation.
Maps class-based dependencies to source dependencies using classes
relation.
The mapping is performed using two relations that track declared classes before and after recompilation of sources. This way, we can properly map dependencies on classes that have been moved between source files. In such case, a single class can be mapped to two different source files.
Information about compiler runs accumulated since clean
command has been run.
A trait that encapsulates looking up elements on a classpath and looking up an external (for another subproject) Analysis instance.
ModifiedNames are determined by comparing name hashes in two versions of an API representation.
ModifiedNames are determined by comparing name hashes in two versions of an API representation.
Note that we distinguish between sets of regular (non-implicit) and implicit modified names. This distinction is needed because the name hashing algorithm makes different decisions based on whether modified name is implicit or not. Implicit names are much more difficult to handle due to difficulty of reasoning about the implicit scope.
An APIChange that carries information about modified names.
An APIChange that carries information about modified names.
This class is used only when name hashing algorithm is enabled.
Provides mappings between source files, generated classes (products), and binaries.
Provides mappings between source files, generated classes (products), and binaries. Dependencies that are tracked include internal: a dependency on a source in the same compilation group (project), external: a dependency on a source in another compilation group (tracked as the name of the class), library: a dependency on a class or jar file not generated by a source file in any tracked compilation group, inherited: a dependency that resulted from a public template inheriting, direct: any type of dependency, including inheritance.
Provides information about files as they were at a specific time.
Helper class to run incremental compilation algorithm.
Helper class to run incremental compilation algorithm.
This class delegates down to - IncrementalNameHashing - IncrementalDefault - IncrementalAnyStyle
Helper methods for running incremental compilation.
Helper methods for running incremental compilation. All this is responsible for is adapting any xsbti.AnalysisCallback into one compatible with the sbt.internal.inc.Incremental class.
If we recompile a source file that contains a macro definition then we always assume that it's api has changed. The reason is that there's no way to determine if changes to macros implementation are affecting its users or not. Therefore we err on the side of caution.