@Visits void reach(MessageType message) { markAsReachable(message); visitInScope(message.getFields()); // Check whether required fields are hidden, and whether the message has unreachable // descendants. for (Field field : message.getFields()) { if (!isReachable(field)) { hasUnreachableDescendants.add(message); if (field.isRequired()) { error(field, "A required field cannot be hidden. %s.", reasonForUnreachable(field)); } } else { TypeRef type = field.getType(); if (type.isMessage() && hasUnreachableDescendants(type.getMessageType()) || type.isEnum() && hasUnreachableDescendants(type.getEnumType())) { hasUnreachableDescendants.add(message); } } } }
@Visits void reach(MessageType message) { markAsReachable(message); visitInScope(message.getFields()); // Check whether required fields are hidden, and whether the message has unreachable // descendants. for (Field field : message.getFields()) { if (!isReachable(field)) { hasUnreachableDescendants.add(message); if (field.isRequired()) { error(field, "A required field cannot be hidden. %s.", reasonForUnreachable(field)); } } else { TypeRef type = field.getType(); if (type.isMessage() && hasUnreachableDescendants(type.getMessageType()) || type.isEnum() && hasUnreachableDescendants(type.getEnumType())) { hasUnreachableDescendants.add(message); } } } }