diff options
| author | tslil <tslil@posteo.de> | 2026-05-06 20:43:00 +0100 |
|---|---|---|
| committer | tslil <tslil@posteo.de> | 2026-05-06 22:42:00 +0100 |
| commit | fb5ba7fb62f4ce75f307233d5ffb438243f353b6 (patch) | |
| tree | 35b489025f7accfb73e40e2d8dad46ef1b4f2963 /src/checker_signature.rs | |
| parent | d682ad6bbb5547ffbcc19da90275ff43e4e03e20 (diff) | |
fixing ...
Diffstat (limited to 'src/checker_signature.rs')
| -rw-r--r-- | src/checker_signature.rs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/checker_signature.rs b/src/checker_signature.rs index ab54fd1..9d0bffe 100644 --- a/src/checker_signature.rs +++ b/src/checker_signature.rs @@ -107,7 +107,7 @@ impl CheckerState { } } - #[instrument(skip(self), level = "debug", fields(%instance, ?signature))] + #[instrument(skip(self), level = "debug", fields(%instance, signature=%signature.map(|s| s.to_string()).unwrap_or_default()) )] pub fn check_instance( &self, instance: &Instance, @@ -140,10 +140,24 @@ impl CheckerState { claimed: signature.clone(), }); }; + println!("{self}"); let element = self.check_element(element, set)?; Ok(Instance::ElementCoerce(element)) } else { // todo!("how do we handle check_element without a set?"); + println!("THISISATTODO"); + // quick hack: + let element = if let Element::Var(v) = element { + let lookup = self.lookup_element(&v)?; + if let ElementValue::Concrete(ref x) = lookup.value { + x.clone() + } else { + element.clone() + } + } else { + element.clone() + }; + Ok(Instance::ElementCoerce(element.clone())) } } @@ -491,6 +505,7 @@ impl CheckerState { claimed: signature.clone(), }); } + let mut ctx = self.clone(); let inst_params = zip(inst_params, sig_params) .map( @@ -519,6 +534,12 @@ impl CheckerState { Element::Var(set_n.clone()).into(), set_s.clone(), )?; + // TODO should this be unconditional? + ctx.add_element( + set_n.clone(), + ElementValue::Hypothetical, + set_s.clone() + )?; Ok(Param { name: set_n.clone(), set: set_s, |
