On 29.03.2018 18:02, Alan Bateman wrote:
On 29/03/2018 15:36, Stephan Herrmann wrote:
I'm looking at jdk.xml.bind/module-info.class from JDK 9.0.4.
I do find a RuntimeVisibleAnnotation attribute representing
@java.lang.Deprecated(since="9", forRemoval=true)
but I don't find a Deprecated attribute.
Is this intended? JVMS 4.7.15 neither includes nor excludes
modules, but not generating the Deprecated attribute looks
like an omission to me.
Are you using `javap` to look at the class or something else?
I ask because `javap` tool was updated in JDK 10 to render annotations in a more friendly way. When I use the JDK 10 `javap` to look
at the jdk.xml.bind's module-info.class from JDK 9 I see:
RuntimeVisibleAnnotations:
0: #5(#6=s#7,#8=Z#9)
java.lang.Deprecated(
since="9"
forRemoval=true
)
whereas the JDK 9 `javap` prints less useful output.
I did use JDK 9 javap, but was able to decipher the
RuntimeVisibleAnnotations attribute as you can see above :)
(Still good to know about the improvement in JDK 10).
My question, however, concerns the lack of a Deprecated
*attribute* a la JVMS 4.7.15.
Is that intended or not?
IOW, are compilers expected to evaluate RuntimeVisibleAnnotations
in order to issue deprecation warnings?
In the past this was not necessary.
best,
Stephan