aboutsummaryrefslogtreecommitdiff
path: root/src/checker_signature.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/checker_signature.rs')
-rw-r--r--src/checker_signature.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/checker_signature.rs b/src/checker_signature.rs
index 4fa723f..4d5f02c 100644
--- a/src/checker_signature.rs
+++ b/src/checker_signature.rs
@@ -12,14 +12,20 @@ impl CheckerState {
let deref = self.lookup_signature(&v)?;
Ok(deref.clone())
}
- Signature::Ext { params, codomain } => Err(CheckerError::Unimplemented(
+ Signature::Ext { .. } => Err(CheckerError::Unimplemented(
"extension signatures".to_string(),
)),
Signature::Theory(fields) => {
+ let mut ctx = self.clone();
let fields = fields
.into_iter()
.map(|SigField { signature, name }| {
- let signature = self.check_signature(signature)?;
+ let signature = ctx.check_signature(signature)?;
+ ctx.add_instance(
+ name.clone(),
+ InstanceValue::Hypothetical(signature.clone()),
+ signature.clone(),
+ )?;
Ok(SigField { name, signature })
})
.collect::<Result<Vec<_>, _>>()?;