RFR JDK-8164836: fix jdeprscan violations of tools/all/RunCodingRules.java

Stuart Marks stuart.marks at oracle.com
Fri Aug 26 15:36:04 UTC 2016

Hi Jan,

Thanks for picking this up.

As you point out, the API usage in jdeprscan, and its containing module 
jdk.jdeps, really isn't the target of @DefinedBy. It's "implementing" the APIs, 
but for the purpose of getting callbacks from the annotation processing 
framework, not for the purpose of providing an implementation of the API to the 
general public. In that sense @DefinedBy doesn't really apply, so it makes sense 
to adjust the DefinedByAnalyzer to be more specific in what it's checking.

But does special-casing jdk.jdeps make sense? Or should there be some kind of 
finer-grained logic to determine when @DefinedBy should and shouldn't apply? I 
wouldn't be surprised if there are other usages of @DefinedBy outside of 
jdk.jdeps that are in a similar situation. See jdk.jshell for instance.

I've prepared a patch -- not yet posted anywhere -- that simply adds the right 
@DefinedBy annotations in jdeprscan. This is simple enough to do, even though it 
might not be the right thing.


On 8/26/16 5:00 AM, Jan Lahoda wrote:
> Hi,
> The RunCodingRules test is broken after 871b60b0c091, and has been disabled. My
> proposal to fix this is to disable the DefinedByAnalyzer for classes from the
> jdk.jdeps module. This module is not AFAIK implementing the APIs, and so is not
> a primary target of the analyzer/@DefinedBy annotation. One notable alternative
> would be to disable the crules completely for jdk.jdeps, but I opted rather for
> a more limited change. (Another alternative would be to add the @DefinedBy
> annotations to classes jdk.jdeps, but that does not seem quite right to me.)
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8164836
> Webrev:
> http://cr.openjdk.java.net/~jlahoda/8164836/webrev.00/
> Jan

More information about the compiler-dev mailing list