diff --git a/sbt/src/sbt-test/source-dependencies/trait-private-var/A.scala b/sbt/src/sbt-test/source-dependencies/trait-private-var/A.scala new file mode 100644 index 000000000..cf57bdb33 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/trait-private-var/A.scala @@ -0,0 +1,3 @@ +trait A { + def bar: Int = 0 +} diff --git a/sbt/src/sbt-test/source-dependencies/trait-private-var/B.scala b/sbt/src/sbt-test/source-dependencies/trait-private-var/B.scala new file mode 100644 index 000000000..a0bb35627 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/trait-private-var/B.scala @@ -0,0 +1,3 @@ +object B extends A { + def main(args: Array[String]): Unit = println(bar) +} diff --git a/sbt/src/sbt-test/source-dependencies/trait-private-var/changes/A.scala b/sbt/src/sbt-test/source-dependencies/trait-private-var/changes/A.scala new file mode 100644 index 000000000..3eb53d77c --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/trait-private-var/changes/A.scala @@ -0,0 +1,5 @@ +trait A { + private var foo = 12 + // we need to access foo to trigger AbstractMethodError + def bar: Int = foo +} diff --git a/sbt/src/sbt-test/source-dependencies/trait-private-var/pending b/sbt/src/sbt-test/source-dependencies/trait-private-var/pending new file mode 100644 index 000000000..d928246a9 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/trait-private-var/pending @@ -0,0 +1,14 @@ +# compile and run for the first time to verify that everything works +> run + +# introduce private var and refer to it in a trait that we inherit from +# there'll be pair of getters and setters generated for private var that +# has to be implemented by a class (where you can declare corresponding field) +$ copy-file changes/A.scala A.scala + +# this fails with AbstractMethodError because getters and setters for +# a private var are not generated because introduction of a private var +# does not trigger recompilation of B +# B is not recompiled because incremental compiler tracks only public +# interace (members visible from outside of given trait/class) +> run