return false;
}
GoTypeStructField field = (GoTypeStructField) allFields[i];
GoTypeStructField otherField = (GoTypeStructField) otherStructAllFields[i];
PsiElementBase tag = field.getTag();
PsiElementBase otherTag = otherField.getTag();
if ((tag == null && otherTag != null) || (otherTag == null && tag != null))
return false;
if (tag != null && !tag.getText().equals(otherTag.getText()))
return false;
GoLiteralIdentifier[] identifiers = field.getIdentifiers();
GoLiteralIdentifier[] otherIdentifiers = otherField.getIdentifiers();
if (identifiers.length != otherIdentifiers.length)
return false;
for (int j = 0; j < identifiers.length; j++) {
GoLiteralIdentifier identifier = identifiers[j];
GoLiteralIdentifier otherIdentifier = otherIdentifiers[j];
if (!identifier.getName().equals(otherIdentifier.getName()))
return false;
if (!field.getType().isIdentical(otherField.getType()))
return false;
}
} else {
//Check anonymous fields
if (!(otherStructAllFields[i] instanceof GoTypeStructAnonymousField))
return false;
GoTypeStructAnonymousField field = (GoTypeStructAnonymousField) allFields[i];
GoTypeStructAnonymousField otherField = (GoTypeStructAnonymousField) otherStructAllFields[i];
if (!field.getFieldName().equals(otherField.getFieldName()))
return false;
if (!field.getType().isIdentical(otherField.getType()))
return false;
PsiElementBase tag = field.getTag();
PsiElementBase otherTag = otherField.getTag();
if ((tag == null && otherTag != null) || (otherTag == null && tag != null))
return false;
if (tag != null && !tag.getText().equals(otherTag.getText()))
return false;
}
}
return true;