mirror of https://github.com/sbt/sbt.git
Extend test `trait-private-var` with vals
Private vars and private vals defined in a trait impact the bytecode generated for the implementors of these traits. The scripted test `source-dependencies/trait-private-var` only accounted for private vars. It now tries the same scenario both with private vars and private vals.
This commit is contained in:
parent
7d94251108
commit
edc1174468
|
|
@ -0,0 +1,5 @@
|
|||
trait A {
|
||||
private val foo = 12
|
||||
// we need to access foo to trigger AbstractMethodError
|
||||
def bar: Int = foo
|
||||
}
|
||||
|
|
@ -1,14 +1,28 @@
|
|||
$ copy-file changes/A0.scala A.scala
|
||||
|
||||
# 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
|
||||
$ copy-file changes/A1.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)
|
||||
# If the introduction of a private var did not trigger the recompilation of B,
|
||||
# then this will fail with AbstractMethodError because the getters and setters
|
||||
# for the private var have not been generated.
|
||||
> run
|
||||
|
||||
# Try again with a private val
|
||||
> clean
|
||||
|
||||
$ copy-file changes/A0.scala A.scala
|
||||
|
||||
# compile and run a clean project to verify that everything works
|
||||
> run
|
||||
|
||||
# introduce a private val in the trait
|
||||
$ copy-file changes/A2.scala A.scala
|
||||
|
||||
# Verify that B has been recompiled and that everything runs fine.
|
||||
> run
|
||||
|
|
|
|||
Loading…
Reference in New Issue