> setup; reload

# Verifies if dependencies introduced by inheritance by local classes are handled correctly.
# They are different from regular inheritance dependencies because they should not be
# invalidated transitively, see: https://github.com/sbt/sbt/issues/1104#issuecomment-169146039

> compile

$ copy-file changes/A2.scala A.scala
> compile
# D should be compiled only at the beginning; it depends by inheritance only
# on C and C's public interface is not affected by changes to A
> checkRecompilations 0 D
# A is explicitly changed
> checkRecompilations 1 A
# B is recompiled because it depends by inheritance on A
# C is recompiled because it depends by local inheritance on B but its
# dependencies (D) are not recompiled
> checkRecompilations 2 B C
