// Looking it up ensures we get the annotations - the accessedMembers are just retrieved from the attribute and
// don't have that information
ResolvedMember resolvedMember = world.resolve(member);
+
+ // pr333469
+ // If the member is for an ITD (e.g. serialVersionUID) then during resolution we may resolve it on
+ // a supertype because it doesn't yet exist on the target.
+ // For example: MyList extends ArrayList<String> and the ITD is on MyList - after resolution it may be:
+ // ArrayList<String>.serialVersionUID, we need to avoid that happening
+
if (resolvedMember == null) {
// can happen for ITDs - are there many privileged access ITDs??
resolvedMember = member;
+ if (resolvedMember.hasBackingGenericMember()) {
+ resolvedMember = resolvedMember.getBackingGenericMember();
+ }
+ } else {
+ UnresolvedType unresolvedDeclaringType = member.getDeclaringType().getRawType();
+ UnresolvedType resolvedDeclaringType = resolvedMember.getDeclaringType().getRawType();
+ if (!unresolvedDeclaringType.equals(resolvedDeclaringType)) {
+ resolvedMember = member;
+ }
}
PrivilegedAccessMunger privilegedAccessMunger = new PrivilegedAccessMunger(resolvedMember,
version >= WeaverVersionInfo.WEAVER_VERSION_AJ169);