Disallow typing optional fields when required fields are annotated

Closes #4313
This commit is contained in:
Ayaz Hafiz 2022-10-18 15:50:20 -05:00
parent 62c9a2a8b6
commit 05e8e6de6f
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
13 changed files with 133 additions and 85 deletions

View file

@ -3117,7 +3117,9 @@ fn layout_from_flat_type<'a>(
for (label, field) in it {
match field {
RecordField::Required(field_var) | RecordField::Demanded(field_var) => {
RecordField::Required(field_var)
| RecordField::Demanded(field_var)
| RecordField::RigidRequired(field_var) => {
sortables
.push((label, cached!(Layout::from_var(env, field_var), criteria)));
}
@ -3220,7 +3222,7 @@ fn sort_record_fields_help<'a>(
for (label, field) in fields_map {
match field {
RecordField::Demanded(v) | RecordField::Required(v) => {
RecordField::Demanded(v) | RecordField::Required(v) | RecordField::RigidRequired(v) => {
let Cacheable(layout, _) = Layout::from_var(env, v);
sorted_fields.push((label, v, Ok(layout?)));
}