Refactor multiple if let bindings
Replaces nested `if let` statements with sequential `if let` bindings, improving readability. This change is applied to `Dumper::log_bound`, `LambdaCollector::visit_bound`, `Environment::call_object_method`, and `Environment::call_lambda`.
This commit is contained in:
@@ -39,8 +39,9 @@ impl Dumper {
|
||||
BoundKind::Constant(v) => {
|
||||
self.log(&format!("Constant: {}", v), node);
|
||||
// Introspect Closure AST if possible
|
||||
if let Value::Object(obj) = v {
|
||||
if let Some(closure) = obj.as_any().downcast_ref::<Closure>() {
|
||||
if let Value::Object(obj) = v
|
||||
&& let Some(closure) = obj.as_any().downcast_ref::<Closure>()
|
||||
{
|
||||
self.indent += 1;
|
||||
self.write_indent();
|
||||
self.output.push_str("--- Specialized Body ---\n");
|
||||
@@ -58,7 +59,6 @@ impl Dumper {
|
||||
self.output.push('\n');
|
||||
}
|
||||
self.indent -= 1;
|
||||
}
|
||||
}
|
||||
},
|
||||
BoundKind::Get { addr, name } => self.log(&format!("Get: {} ({:?})", name.name, addr), node),
|
||||
|
||||
@@ -32,10 +32,10 @@ impl<'a> LambdaCollector<'a> {
|
||||
|
||||
BoundKind::Set { addr, value } => {
|
||||
// Also track assignments to globals if they hold lambdas.
|
||||
if let Address::Global(global_index) = addr {
|
||||
if let BoundKind::Lambda { .. } = &value.kind {
|
||||
self.registry.insert(*global_index, (**value).clone());
|
||||
}
|
||||
if let Address::Global(global_index) = addr
|
||||
&& let BoundKind::Lambda { .. } = &value.kind
|
||||
{
|
||||
self.registry.insert(*global_index, (**value).clone());
|
||||
}
|
||||
self.visit(value);
|
||||
}
|
||||
|
||||
@@ -233,11 +233,11 @@ impl Environment {
|
||||
let mut vm = VM::new(self.global_values.clone());
|
||||
let result = vm.run(node)?;
|
||||
|
||||
if let Value::Object(obj) = &result {
|
||||
if let Some(closure) = obj.as_any().downcast_ref::<crate::ast::vm::Closure>() {
|
||||
// Execute the script body
|
||||
return vm.run(&closure.function_node);
|
||||
}
|
||||
if let Value::Object(obj) = &result
|
||||
&& let Some(closure) = obj.as_any().downcast_ref::<crate::ast::vm::Closure>()
|
||||
{
|
||||
// Execute the script body
|
||||
return vm.run(&closure.function_node);
|
||||
}
|
||||
|
||||
Ok(result)
|
||||
@@ -267,10 +267,10 @@ impl Environment {
|
||||
let mut result = vm.run_with_observer(&mut observer, &linked);
|
||||
|
||||
// If result is a closure (script entry), execute the body too
|
||||
if let Ok(Value::Object(obj)) = &result {
|
||||
if let Some(closure) = obj.as_any().downcast_ref::<crate::ast::vm::Closure>() {
|
||||
result = vm.run_with_observer(&mut observer, &closure.function_node);
|
||||
}
|
||||
if let Ok(Value::Object(obj)) = &result
|
||||
&& let Some(closure) = obj.as_any().downcast_ref::<crate::ast::vm::Closure>()
|
||||
{
|
||||
result = vm.run_with_observer(&mut observer, &closure.function_node);
|
||||
}
|
||||
|
||||
Ok((result, observer.logs))
|
||||
|
||||
Reference in New Issue
Block a user