From c8bf46e893588b4578ee453602ad0a7a1da56892 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Mon, 1 Feb 2016 19:14:44 +0100 Subject: [PATCH] Expand `pkg-self` scripted test to cover #2326 The previous version of `pkg-self` covered scenario where a package object inherited directly from a class that is being modified and recompiled in subsequent steps. The #2326 shows that name hashing fails to handle a package object that inherits indirectly from a modified class. In that case, name hashing fails to invalidate the source file that defines the package object. This commit expands `pkg-self` with a class B that inherits from modified class `A` and makes package object inherit from B. We mark that test as pending to show that this indeed trigger the bug in name hashing. --- .../sbt-test/source-dependencies/pkg-self/changes/B.scala | 6 ++---- .../sbt-test/source-dependencies/pkg-self/changes/C.scala | 5 +++++ .../source-dependencies/pkg-self/changes/package.scala | 2 +- .../sbt-test/source-dependencies/pkg-self/{test => pending} | 3 ++- 4 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 sbt/src/sbt-test/source-dependencies/pkg-self/changes/C.scala rename sbt/src/sbt-test/source-dependencies/pkg-self/{test => pending} (85%) 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/pending similarity index 85% rename from sbt/src/sbt-test/source-dependencies/pkg-self/test rename to sbt/src/sbt-test/source-dependencies/pkg-self/pending index 595138bba..0486d693b 100644 --- a/sbt/src/sbt-test/source-dependencies/pkg-self/test +++ b/sbt/src/sbt-test/source-dependencies/pkg-self/pending @@ -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