On 10/04/2013 10:30 AM, mark.reinh...@oracle.com wrote:
2013/10/3 16:43 -0700, joe.da...@oracle.com:
Per previous discussions on the mailing list, we've decided to rename
the annotation type "jdk.Supported" to "jdk.Exported".
...
Looks good to me.
One question, though: Is it intended that one use of this annotation
can be overridden by another at a deeper lexical level? For example:
@Supported
public class X {
@Supported(false)
public static class Y {
}
}
I would say that is most likely a logical error to have inconsistent
exported-ness on a top-level and its nested types, but it is an
extra-linguistic correctness issue for the semantics we want to impose
on this annotation.
Conceivably, such an inconsistency could arise if for some reason a
nested type was slated for removal in the future but the containing type
was not.
Equivalently, imagine @Supported in a package-info.java file and
@Supported(false) on a type within that package.
At the package level, I'd say the package-info file should have the
prevailing exported-ness of the types in that package, but sometimes
there are a few bad types and the rest should stay.
If so then it'd be helpful to mention this possibility in the
specification.
I'll add some guidance on these points.
Thanks,
-Joe