|
We should be checking whether each field in the old command's reply type exists in the new command's reply type and hasn't become unstable in the new command. If the field is optional in the old command's reply type, it should be optional in the new command's reply type as well. This corresponds to the following pseudocode:
old_reply := old_cmd.reply_type
|
new_reply := new_cmd.reply_type
|
|
for each field old_field in old_reply:
|
if old_field.unstable:
|
continue
|
|
new_field := get field from new_reply with old_field's name
|
|
assert new_field exists and !new_field.unstable
|
if new_field.optional:
|
assert old_field.optional
|
|