Hi Joel,

looks good. I see a CCC has been filed.

Nits:
In AnnotatedTypeFactory.java, newly introduced EMPTY_TYPE_ANNOTATION_ARRAY could be used to replace a few occurrences of new TypeAnnotation[0] in the code above).

In TypeAnnotation.java:
New method popLocation(byte tag) seems to be unused, and popLocation() is only used from popAllLocations(byte tag), so it might suffice to only keep popAllLocations:

        public LocationInfo popAllLocations(byte tag) {
            LocationInfo l = this;
            int depth = l.depth;
            while(depth > 0 && l.locations[depth - 1].tag == tag) {
                depth--;
            }
            if (depth != l.depth) {
                Location[] res = new Location[depth];
                System.arraycopy(this.locations, 0, res, 0, depth);
                return new LocationInfo(depth, res);
            }
            return l;
        }

Not a reviewer, easy to ignore. :-)

/Claes

On 2015-11-17 20:15, Joel Borggrén-Franck wrote:
Hi,

When reflecting over annotated types, there is currently no way to get
the potentially annotated owner of a type. For example, given you have
an instance of '@A Outer . @B Inner' you can't traverse it to get '@A
Outer' .

This API addition fixes this. Because both parameterized and
non-generic types can have an owner, this addition goes into the base
AnnotatedType interface together with a default implementation. CCC
has been filed.

The parsing code and annotated type factory had to be fixed to deal
with navigating inside nested types.

Bug:       https://bugs.openjdk.java.net/browse/JDK-8057804
Webrev: http://cr.openjdk.java.net/~rbackman/jbf/8057804/webrev.00/


(OCA is signed and processed).

Cheers
/Joel

Reply via email to