char[] fieldName = field.getName();
for (int j = 0; j < existingFs.length; j++) {
if (CharOperation.equals(existingFs[j].getName(), fieldName)) {
- if (!modifiersEqual(field.getModifiers(), existingFs[j].getModifiers())) {
+ IBinaryField existing = existingFs[j];
+ if (!modifiersEqual(field.getModifiers(), existing.getModifiers())) {
return true;
}
- if (!CharOperation.equals(existingFs[j].getTypeName(), field.getTypeName())) {
+ if (!CharOperation.equals(existing.getTypeName(), field.getTypeName())) {
return true;
}
+
+ char[] existingGSig = existing.getGenericSignature();
+ char[] fieldGSig = field.getGenericSignature();
+ if ((existingGSig == null && fieldGSig != null) || (existingGSig != null && fieldGSig == null)) {
+ return true;
+ }
+ if (existingGSig != null) {
+ if (!CharOperation.equals(existingGSig, fieldGSig)) {
+ return true;
+ }
+ }
+
continue new_field_loop;
}
}