diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2016-11-30 13:42:36 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2016-12-05 08:47:34 +0100 |
commit | 7a57c6eec6c37e8ca3a7f182f0cf2604d7bc80df (patch) | |
tree | e880de7e67ec2144096660faa3ab4b5dbf41d6f9 /test/files/run/t10075b/Test_2.scala | |
parent | 0339663cbbd4d22b0758257f2ce078b5a007f316 (diff) | |
download | scala-7a57c6eec6c37e8ca3a7f182f0cf2604d7bc80df.tar.gz scala-7a57c6eec6c37e8ca3a7f182f0cf2604d7bc80df.tar.bz2 scala-7a57c6eec6c37e8ca3a7f182f0cf2604d7bc80df.zip |
SI-10075 annotations go to lazy val's underlying field
This likely regressed in #5294.
Review feedback from retronym:
- Tie annotation triaging a bit closer together
durban kindly provided initial version of test/files/run/t10075.scala
And pointed out you must force `lazy val`, since `null`-valued field
is serializable regardless of its type.
Test test/files/run/t10075b courtesy of retronym
Diffstat (limited to 'test/files/run/t10075b/Test_2.scala')
-rw-r--r-- | test/files/run/t10075b/Test_2.scala | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/files/run/t10075b/Test_2.scala b/test/files/run/t10075b/Test_2.scala new file mode 100644 index 0000000000..89ba2bd488 --- /dev/null +++ b/test/files/run/t10075b/Test_2.scala @@ -0,0 +1,56 @@ +class C { + @(RetainedAnnotation @annotation.meta.field) + lazy val lzyValFieldAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.getter) + lazy val lzyValGetterAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.field) + val valFieldAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.getter) + val valGetterAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.field) + var varFieldAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.getter) + var varGetterAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.setter) + var varSetterAnnotation = 42 +} + +trait T { + @(RetainedAnnotation @annotation.meta.field) + lazy val lzyValFieldAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.getter) + lazy val lzyValGetterAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.field) + val valFieldAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.getter) + val valGetterAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.field) + var varFieldAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.getter) + var varGetterAnnotation = 42 + + @(RetainedAnnotation @annotation.meta.setter) + var varSetterAnnotation = 42 + + @RetainedAnnotation + def method = 42 +} +class TMix extends T + +object Test extends App { + (List(classOf[C], classOf[T], classOf[TMix]). + flatMap(cls => cls.getDeclaredFields ++ cls.getDeclaredMethods)). + sortBy(x => (x.getDeclaringClass.getName, x.getName, x.toString)). + foreach(x => println(x.getAnnotations.toList.mkString(" ") + " " + x)) +}
\ No newline at end of file |