chore: cargo clippy
This commit is contained in:
@@ -24,7 +24,7 @@ fn main() -> Result<()> {
|
|||||||
let expr = root.tree().expr().unwrap();
|
let expr = root.tree().expr().unwrap();
|
||||||
let downgraded = downgrade(expr)?;
|
let downgraded = downgrade(expr)?;
|
||||||
let prog = compile(downgraded);
|
let prog = compile(downgraded);
|
||||||
println!("{:?}", prog);
|
println!("{prog:?}");
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ pub struct Env<K: Hash + Eq + Clone, V: Clone> {
|
|||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct LetEnv<K: Hash + Eq + Clone, V: Clone> {
|
pub struct LetEnv<K: Hash + Eq + Clone, V: Clone> {
|
||||||
map: Let<K, V>,
|
map: LetNode<K, V>,
|
||||||
last: Option<Rc<LetEnv<K, V>>>,
|
last: Option<Rc<LetEnv<K, V>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ pub struct With<K: Hash + Eq, V> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
enum Let<K: Hash + Eq, V> {
|
enum LetNode<K: Hash + Eq, V> {
|
||||||
Let(Rc<HashMap<K, V>>),
|
Let(Rc<HashMap<K, V>>),
|
||||||
SingleArg(K, V),
|
SingleArg(K, V),
|
||||||
MultiArg(Rc<HashMap<K, V>>),
|
MultiArg(Rc<HashMap<K, V>>),
|
||||||
@@ -100,13 +100,13 @@ impl<K: Hash + Eq + Clone, V: Clone> Env<K, V> {
|
|||||||
impl<K: Hash + Eq + Clone, V: Clone> LetEnv<K, V> {
|
impl<K: Hash + Eq + Clone, V: Clone> LetEnv<K, V> {
|
||||||
pub fn new(map: Rc<HashMap<K, V>>) -> Self {
|
pub fn new(map: Rc<HashMap<K, V>>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
map: Let::Let(map),
|
map: LetNode::Let(map),
|
||||||
last: None,
|
last: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lookup(&self, symbol: &K) -> Option<&V> {
|
pub fn lookup(&self, symbol: &K) -> Option<&V> {
|
||||||
use self::Let::*;
|
use self::LetNode::*;
|
||||||
match &self.map {
|
match &self.map {
|
||||||
Let(map) | MultiArg(map) => {
|
Let(map) | MultiArg(map) => {
|
||||||
if let Some(val) = map.get(symbol) {
|
if let Some(val) = map.get(symbol) {
|
||||||
@@ -126,14 +126,14 @@ impl<K: Hash + Eq + Clone, V: Clone> LetEnv<K, V> {
|
|||||||
let cloned = self.clone();
|
let cloned = self.clone();
|
||||||
let mutref = Rc::make_mut(self);
|
let mutref = Rc::make_mut(self);
|
||||||
mutref.last = Some(cloned);
|
mutref.last = Some(cloned);
|
||||||
mutref.map = Let::SingleArg(ident, val);
|
mutref.map = LetNode::SingleArg(ident, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn enter_let(self: &mut Rc<Self>, map: Rc<HashMap<K, V>>) {
|
pub fn enter_let(self: &mut Rc<Self>, map: Rc<HashMap<K, V>>) {
|
||||||
let cloned = self.clone();
|
let cloned = self.clone();
|
||||||
let mutref = Rc::make_mut(self);
|
let mutref = Rc::make_mut(self);
|
||||||
mutref.last = Some(cloned);
|
mutref.last = Some(cloned);
|
||||||
mutref.map = Let::Let(map);
|
mutref.map = LetNode::Let(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn leave(self: &mut Rc<Self>) {
|
pub fn leave(self: &mut Rc<Self>) {
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ impl<'vm, 'jit: 'vm> VM<'jit> {
|
|||||||
}
|
}
|
||||||
OpCode::FinalizeRec => {
|
OpCode::FinalizeRec => {
|
||||||
env.enter_let(stack.tos()?.clone().unwrap_attr_set().into_inner());
|
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 } => {
|
OpCode::PushStaticAttr { name } => {
|
||||||
let val = stack.pop();
|
let val = stack.pop();
|
||||||
|
|||||||
Reference in New Issue
Block a user