diff --git a/src/bin/compile.rs b/src/bin/compile.rs index 0b263cf..31781ec 100644 --- a/src/bin/compile.rs +++ b/src/bin/compile.rs @@ -24,7 +24,7 @@ fn main() -> Result<()> { let expr = root.tree().expr().unwrap(); let downgraded = downgrade(expr)?; let prog = compile(downgraded); - println!("{:?}", prog); + println!("{prog:?}"); Ok(()) } diff --git a/src/vm/env.rs b/src/vm/env.rs index 48981a2..2d6b9bc 100644 --- a/src/vm/env.rs +++ b/src/vm/env.rs @@ -13,7 +13,7 @@ pub struct Env { #[derive(Clone)] pub struct LetEnv { - map: Let, + map: LetNode, last: Option>>, } @@ -44,7 +44,7 @@ pub struct With { } #[derive(Debug, Clone)] -enum Let { +enum LetNode { Let(Rc>), SingleArg(K, V), MultiArg(Rc>), @@ -100,13 +100,13 @@ impl Env { impl LetEnv { pub fn new(map: Rc>) -> Self { Self { - map: Let::Let(map), + map: LetNode::Let(map), last: None, } } pub fn lookup(&self, symbol: &K) -> Option<&V> { - use self::Let::*; + use self::LetNode::*; match &self.map { Let(map) | MultiArg(map) => { if let Some(val) = map.get(symbol) { @@ -126,14 +126,14 @@ impl LetEnv { let cloned = self.clone(); let mutref = Rc::make_mut(self); mutref.last = Some(cloned); - mutref.map = Let::SingleArg(ident, val); + mutref.map = LetNode::SingleArg(ident, val); } pub fn enter_let(self: &mut Rc, map: Rc>) { let cloned = self.clone(); let mutref = Rc::make_mut(self); mutref.last = Some(cloned); - mutref.map = Let::Let(map); + mutref.map = LetNode::Let(map); } pub fn leave(self: &mut Rc) { diff --git a/src/vm/mod.rs b/src/vm/mod.rs index c16524e..f45c1f2 100644 --- a/src/vm/mod.rs +++ b/src/vm/mod.rs @@ -190,7 +190,7 @@ impl<'vm, 'jit: 'vm> VM<'jit> { } OpCode::FinalizeRec => { env.enter_let(stack.tos()?.clone().unwrap_attr_set().into_inner()); - stack.tos_mut()?.as_mut().unwrap_attr_set().capture(&env); + stack.tos_mut()?.as_mut().unwrap_attr_set().capture(env); } OpCode::PushStaticAttr { name } => { let val = stack.pop();