diff --git a/compile/inc/src/main/scala/sbt/inc/IncrementalNameHashing.scala b/compile/inc/src/main/scala/sbt/inc/IncrementalNameHashing.scala index 1aaff67b4..49c0c1d4c 100644 --- a/compile/inc/src/main/scala/sbt/inc/IncrementalNameHashing.scala +++ b/compile/inc/src/main/scala/sbt/inc/IncrementalNameHashing.scala @@ -18,7 +18,9 @@ private final class IncrementalNameHashing(log: Logger, options: IncOptions) ext // Package objects are fragile: if they inherit from an invalidated source, get "class file needed by package is missing" error // This might be too conservative: we probably only need package objects for packages of invalidated sources. override protected def invalidatedPackageObjects(invalidated: Set[File], relations: Relations): Set[File] = - invalidated flatMap relations.inheritance.internal.reverse filter { _.getName == "package.scala" } + transitiveDeps(invalidated)(relations.inheritance.internal.reverse).filter { + _.getName == "package.scala" + } override protected def sameAPI[T](src: T, a: Source, b: Source): Option[APIChange[T]] = { if (SameAPI(a, b)) diff --git a/compile/inc/src/main/scala/sbt/inc/Relations.scala b/compile/inc/src/main/scala/sbt/inc/Relations.scala index 0ad2e3aa7..0cf989784 100644 --- a/compile/inc/src/main/scala/sbt/inc/Relations.scala +++ b/compile/inc/src/main/scala/sbt/inc/Relations.scala @@ -618,13 +618,14 @@ private class MRelationsDefaultImpl(srcProd: Relation[File, File], binaryDep: Re override def toString = ( """ - |Relations: - | products: %s - | bin deps: %s - | src deps: %s - | ext deps: %s - | class names: %s - """.trim.stripMargin.format(List(srcProd, binaryDep, internalSrcDep, externalDep, classes) map relation_s: _*) + |Relations: + | products: %s + | bin deps: %s + | src deps direct: %s + | src deps inherited: %s + | ext deps: %s + | class names: %s + """.trim.stripMargin.format(List(srcProd, binaryDep, internalSrcDep, publicInherited.internal, externalDep, classes) map relation_s: _*) ) } @@ -739,14 +740,15 @@ private class MRelationsNameHashing(srcProd: Relation[File, File], binaryDep: Re override def toString = ( """ - |Relations (with name hashing enabled): - | products: %s - | bin deps: %s - | src deps: %s - | ext deps: %s - | class names: %s - | used names: %s - """.trim.stripMargin.format(List(srcProd, binaryDep, internalSrcDep, externalDep, classes, names) map relation_s: _*) + |Relations (with name hashing enabled): + | products: %s + | bin deps: %s + | src deps memberRef: %s + | src deps inheritance: %s + | ext deps: %s + | class names: %s + | used names: %s + """.trim.stripMargin.format(List(srcProd, binaryDep, memberRef.internal, inheritance.internal, externalDep, classes, names) map relation_s: _*) ) } diff --git a/sbt/src/sbt-test/source-dependencies/pkg-self/changes/B.scala b/sbt/src/sbt-test/source-dependencies/pkg-self/changes/B.scala index 54ffd4574..f67c77c3e 100644 --- a/sbt/src/sbt-test/source-dependencies/pkg-self/changes/B.scala +++ b/sbt/src/sbt-test/source-dependencies/pkg-self/changes/B.scala @@ -1,5 +1,3 @@ -package demo +package demo.sub -object B { - 3.y -} +class B extends A diff --git a/sbt/src/sbt-test/source-dependencies/pkg-self/changes/C.scala b/sbt/src/sbt-test/source-dependencies/pkg-self/changes/C.scala new file mode 100644 index 000000000..25be86f59 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/pkg-self/changes/C.scala @@ -0,0 +1,5 @@ +package demo + +object D { + 3.y +} diff --git a/sbt/src/sbt-test/source-dependencies/pkg-self/changes/package.scala b/sbt/src/sbt-test/source-dependencies/pkg-self/changes/package.scala index 3c01ff4e4..e49f15ac2 100644 --- a/sbt/src/sbt-test/source-dependencies/pkg-self/changes/package.scala +++ b/sbt/src/sbt-test/source-dependencies/pkg-self/changes/package.scala @@ -1,3 +1,3 @@ -package object demo extends sub.A { +package object demo extends sub.B { val y = 9 } diff --git a/sbt/src/sbt-test/source-dependencies/pkg-self/test b/sbt/src/sbt-test/source-dependencies/pkg-self/test index 595138bba..0486d693b 100644 --- a/sbt/src/sbt-test/source-dependencies/pkg-self/test +++ b/sbt/src/sbt-test/source-dependencies/pkg-self/test @@ -1,8 +1,9 @@ # Here we have a package object (demo) that extends a class in a subpackage (demo.sub.A) -# demo.sub.A provides an implicit used by demo.B +# demo.sub.A provides an implicit used by demo.D $ copy-file changes/package.scala src/main/scala/demo/package.scala $ copy-file changes/A1.scala src/main/scala/demo/sub/A.scala $ copy-file changes/B.scala src/main/scala/demo/B.scala +$ copy-file changes/C.scala src/main/scala/demo/C.scala > compile # When recompiling A, we delete the class files for A