mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 05:49:08 +00:00
Disallow typing optional fields when required fields are annotated
Closes #4313
This commit is contained in:
parent
62c9a2a8b6
commit
05e8e6de6f
13 changed files with 133 additions and 85 deletions
|
@ -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?)));
|
||||
}
|
||||
|
|
|
@ -807,7 +807,9 @@ impl Layout {
|
|||
RecordField::Optional(_) | RecordField::RigidOptional(_) => {
|
||||
// do nothing
|
||||
}
|
||||
RecordField::Required(_) | RecordField::Demanded(_) => {
|
||||
RecordField::Required(_)
|
||||
| RecordField::Demanded(_)
|
||||
| RecordField::RigidRequired(_) => {
|
||||
let var = subs.variables[var_index.index as usize];
|
||||
let layout = Layout::from_var_help(layouts, subs, var)?;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue