From a73c34fc2e6b2dbe3ba8f4466851b03d29c016d4 Mon Sep 17 00:00:00 2001 From: tslil Date: Fri, 8 May 2026 10:36:46 +0100 Subject: fix bug in project: we were not substituting into the looked up field set --- src/checker_signature.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/checker_signature.rs') diff --git a/src/checker_signature.rs b/src/checker_signature.rs index 39a35b4..cc5560d 100644 --- a/src/checker_signature.rs +++ b/src/checker_signature.rs @@ -90,7 +90,7 @@ impl CheckerState { let mut new_fields = Vec::new(); for Field { carries, name } in fields { let signature = ctx.check_signature(carries)?; - ctx._recursively_add_hypothetical_instance( + ctx.recursively_add_hypothetical_instance( name.clone(), signature.clone(), None, @@ -106,7 +106,8 @@ impl CheckerState { } } - fn _recursively_add_hypothetical_instance( + #[instrument(skip(self), level = "debug", fields(%name, %signature, head=%head.map(|s| s.to_string()).unwrap_or_default()) )] + fn recursively_add_hypothetical_instance( &mut self, name: String, signature: Signature, @@ -133,7 +134,7 @@ impl CheckerState { self.add_instance(name.clone(), value, signature.clone())?; if let Signature::Theory(fields) = signature { for f in fields { - self._recursively_add_hypothetical_instance( + self.recursively_add_hypothetical_instance( f.name, f.carries, Some(&self_instance), @@ -289,8 +290,10 @@ impl CheckerState { owner: owner_signature, } = self.lookup_signature_field(&field)?; + let field_signature = self.check_signature(field_signature)?; + if let Some(signature) = signature - && !self.equal(signature, field_signature) + && !self.equal(signature, &field_signature) { return Err(CheckerError::WrongSignatureForInstance { value: (*instance.clone()).into(), -- cgit v1.3.1