cl-interpret: Upvars 2.0

- Only captures locals
This commit is contained in:
2025-01-28 06:13:38 -06:00
parent 0eef6b910c
commit fd361f2bea
3 changed files with 15 additions and 3 deletions

View File

@@ -28,7 +28,7 @@ impl<'env> CollectUpvars<'env> {
if blacklist.contains(name) || upvars.contains_key(name) {
return;
}
if let Ok(upvar) = env.get(*name) {
if let Ok(upvar) = env.get_local(*name) {
upvars.insert(*name, Some(upvar));
}
}
@@ -61,7 +61,7 @@ impl<'a> Visit<'a> for CollectUpvars<'_> {
self.visit_expr(init)
}
// a bound name can never be an upvar
self.blacklist.insert(*name);
self.bind_name(name);
}
fn visit_function(&mut self, f: &'a cl_ast::Function) {