aboutsummaryrefslogtreecommitdiff
path: root/src/checker_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/checker_state.rs')
-rw-r--r--src/checker_state.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/checker_state.rs b/src/checker_state.rs
index 42f5089..c12a2d7 100644
--- a/src/checker_state.rs
+++ b/src/checker_state.rs
@@ -246,8 +246,9 @@ impl CheckerState {
name: &String,
field_set: &Set,
owner_set: &Set,
+ rebind: bool,
) -> Result<(), CheckerError> {
- if let Some(set_ref) = self.record_fields.get(name) {
+ if !rebind && let Some(set_ref) = self.record_fields.get(name) {
self.assert_correct_owner(name, set_ref, owner_set)?;
};
self.record_fields.insert(
@@ -281,7 +282,7 @@ impl CheckerState {
}
#[instrument(skip(self), level = "debug", fields(%name, %set))]
- pub fn add_set(&mut self, name: String, set: Set) -> Result<(), CheckerError> {
+ pub fn add_set(&mut self, name: String, set: Set, rebind: bool) -> Result<(), CheckerError> {
match &set {
Set::Record(fields) => {
for Field {
@@ -289,7 +290,7 @@ impl CheckerState {
carries: field_set,
} in fields
{
- self.add_record_field(rfn, field_set, &set)?;
+ self.add_record_field(rfn, field_set, &set, rebind)?;
}
}
Set::Variant(fields) => {