summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2014-09-29 15:14:24 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2014-09-30 12:34:49 +0200
commit6346c6b46d2991def37a9ae81ed5f4f8b90d5efd (patch)
treeb9fe904014c490daf7d22150a1603d7ba7189707 /test/files/run
parent5508e00a552d81ce483bd69084eea087fb178647 (diff)
downloadscala-6346c6b46d2991def37a9ae81ed5f4f8b90d5efd.tar.gz
scala-6346c6b46d2991def37a9ae81ed5f4f8b90d5efd.tar.bz2
scala-6346c6b46d2991def37a9ae81ed5f4f8b90d5efd.zip
SI-8087 keep annotations on mixed-in private[this] fields
Related to SI-2511 / eea7956, which fixed the same issue for non `private[this]` fields. If you have trait T { private[this] val f = 0 } class C extends T Mixin geneartes an accessor method `T.f` with owner `T`. When generating the field in `C`, the Mixin.mixinTraitMembers calls `fAccessor.accessed`. The implementation of `accessed` does a lookup for a member named `"f "` (note the space). The bug is that `private[this]` fields are not renamed to have space (`LOCAL_SUFFIX_STRING`) in their name, so the accessed was not found, and no annotations were copied from it.
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/t8087.scala12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/files/run/t8087.scala b/test/files/run/t8087.scala
new file mode 100644
index 0000000000..6047211756
--- /dev/null
+++ b/test/files/run/t8087.scala
@@ -0,0 +1,12 @@
+trait Foo {
+ @volatile private[this] var x: String = ""
+ @volatile private var y: String = ""
+}
+
+class Bar extends Foo
+
+object Test extends App {
+ classOf[Bar].getDeclaredFields.foreach(f => {
+ assert(java.lang.reflect.Modifier.isVolatile(f.getModifiers), f.getName)
+ })
+}