On Wed, 2 Jun 2021 13:24:10 GMT, David Holmes <david.hol...@oracle.com> wrote:
> Sorry now I see what happens. We aren't combining two arrays of > annotations we're concatenating two streams of byes, each of which > represents a set of annotations, starting with the length. > > The code that receives this on the JDK side doesn't seem to understand > that this is a possibility. > > Though maybe this isn't a bug, maybe the AnnotationParser is > deliberately ignoring the second byte stream. (Though if it were > deliberate there should be some commentary to that affect!) > > David I think this is not deliberate. Since `rawAnnotations` may end up having any of the following: - `RuntimeVisibleAnnotations` (when there were just `RUNTIME` annotation usages compiled into the class or `-XX+PreserveAllAnnotations` was not used at runtime) - `RuntimeInvisibleAnnotations` (when there were just `CLASS` annotation usages compiled into the class and `-XX+PreserveAllAnnotations` was used at runtime) - `RuntimeVisibleAnnotations + RuntimeInvisibleAnnotations` (when there were `RUNTIME` and `CLASS` annotation usages compiled into the class and `-XX+PreserveAllAnnotations` was used at runtime) So why would `RuntimeInvisibleAnnotations` be skipped in 3rd case but not in 2nd case? ------------- PR: https://git.openjdk.java.net/jdk/pull/4280