…ges, fix subsection title
…rom invalidated sources in a subpackage. Resolution of https://issues.scala-lang.org/browse/SI-4695 seems to be to deprecate inheriting from a class in a subpackage. This commit is an alternative solution, possibly to be reverted or restricted if resolution of SI-4695 changes or if this proves to be too conservative in practice. Review by @gkossakowski. With separate inheritance/function call dependency tracking, this probably should only pull in package objects with inheritance dependencies on invalidated files.
The directory contents will be kept as will empty directories.
- override location of resolved Scala jars when scalaInstance is unmanaged - document current behavior: scalaHome, update, scalaInstance, autoScalaLibrary, managedScalaInstance
All of `sbtVersion`, `defScalaVersion` and `buildScalaVersions` were not used anymore. According to @harrah they are coming from really old days of sbt and are not needed because of changes to how sbt interacts with different Scala versions.
While trying to determine binary dependencies sbt lookups class files corresponding to symbols. It tried to do that for packages and most of the time would fail because packages don't have corresponding class file generated. However, in case of case insensitive file system, combined with special nesting structure you could get spurious dependency. See added test case for an example of such structure. The remedy is to never even try to locate class files corresponding to packages. Fixes #620.
This test fails at the moment because there's one unnecessary compile iteration performed. Thus the test is marked as pending. Since the test is compiler version specific, I set it to 2.9.2 (latest stable version).
We store `Seq[xsbt.api.Compilation]` in `Analysis`. Compilation are being appended to sequence for every iteration of the incremental compiler. Note that `Compilation`s are never removed from the sequence unless you start from scratch with empty `Analysis`. You can do that by using sbt's `clean` command. The main use-case for using `compilations` field is to determine how many iterations it took to compilen give code. The `Compilation` object are also stored in `Source` objects so there's an indirect way to recover information about files being recompiled in every iteration. Since `Analysis` is persisted you can use this mechanism to track entire sessions spanning multiple `compile` commands.