Details
-
Task
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
Fully Compatible
-
Repl 2021-02-08, Repl 2021-02-22, Repl 2021-03-08
Description
We should check that the type of each parameter in the new command is a superset of the type in the old command. This corresponds to the following pseudocode:
old_type := old_param's type
|
new_type := new_param's type
|
|
assert old_type.bson_serialization_type != "any"
|
assert new_type.bson_serialization_type != "any"
|
|
|
# Assert new_type ⊇ old_type.
|
if old_type is enum:
|
assert new_type is enum
|
assert new_type's values ⊇ old_type's values
|
elif old_type is struct:
|
assert new_type is struct
|
else:
|
assert new_type.bson_serialization_type ⊇ old_type.bson_serialization_type
|