diff options
Diffstat (limited to 'src/ast')
-rw-r--r-- | src/ast/convert.rs | 11 | ||||
-rw-r--r-- | src/ast/mod.rs | 1 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/ast/convert.rs b/src/ast/convert.rs index f828a16..7ae3147 100644 --- a/src/ast/convert.rs +++ b/src/ast/convert.rs @@ -123,6 +123,7 @@ impl Context { &mut self, name: &T, args: I, + convert_mode: ConvertMode, ) -> Option<Term> where String: Borrow<T>, @@ -151,7 +152,7 @@ impl Context { self.variables.insert(var, value); } - let res = Some(term.clone().convert(self)); + let res = Some(term.clone().convert(self, convert_mode)); for (name, value, indices) in old { for (index, binding) in indices { @@ -166,6 +167,12 @@ impl Context { } } +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum ConvertMode { + NoSubstitution, + WithSubstitution, +} + pub trait Convert: std::fmt::Debug { - fn convert(&self, context: &mut Context) -> Term; + fn convert(&self, context: &mut Context, mode: ConvertMode) -> Term; } diff --git a/src/ast/mod.rs b/src/ast/mod.rs index 09b89e7..888c810 100644 --- a/src/ast/mod.rs +++ b/src/ast/mod.rs @@ -603,6 +603,7 @@ impl Type for Call { type Err = Never; fn closed(&self, _depth: usize) -> Result<(), VariableError> { + dbg!(&self.name); todo!() } |