fix check for constructor of struct setter of immutable field
Merge to v5.3.1
(cherry picked from commit b912d0f059
)
This commit is contained in:
parent
2905090f58
commit
fa6fb56192
|
@ -3828,10 +3828,18 @@ make_struct_proc(Scheme_Struct_Type *struct_type,
|
||||||
2 + need_pos, 2 + need_pos, 0);
|
2 + need_pos, 2 + need_pos, 0);
|
||||||
if (need_pos)
|
if (need_pos)
|
||||||
flags |= SCHEME_PRIM_STRUCT_TYPE_INDEXLESS_SETTER;
|
flags |= SCHEME_PRIM_STRUCT_TYPE_INDEXLESS_SETTER;
|
||||||
else if (struct_type->immutables && struct_type->immutables[field_num])
|
else {
|
||||||
flags |= SCHEME_PRIM_STRUCT_TYPE_BROKEN_INDEXED_SETTER;
|
flags |= SCHEME_PRIM_STRUCT_TYPE_INDEXED_SETTER;
|
||||||
else
|
|
||||||
flags |= SCHEME_PRIM_STRUCT_TYPE_INDEXED_SETTER;
|
if (struct_type->immutables) {
|
||||||
|
if (struct_type->name_pos)
|
||||||
|
field_num -= struct_type->parent_types[struct_type->name_pos - 1]->num_slots;
|
||||||
|
if (struct_type->immutables[field_num]) {
|
||||||
|
flags -= SCHEME_PRIM_STRUCT_TYPE_INDEXED_SETTER;
|
||||||
|
flags |= SCHEME_PRIM_STRUCT_TYPE_BROKEN_INDEXED_SETTER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
/* See note above:
|
/* See note above:
|
||||||
if (need_pos) struct_type->mutator = p; */
|
if (need_pos) struct_type->mutator = p; */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user