From 30cd73aa63ce74201452aee2ea66f436b5fa000b Mon Sep 17 00:00:00 2001 From: Michael Schimmel Date: Thu, 19 Feb 2026 23:56:50 +0100 Subject: [PATCH] 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`. --- src/ast/compiler/dumper.rs | 6 +++--- src/ast/compiler/lambda_collector.rs | 8 ++++---- src/ast/environment.rs | 18 +++++++++--------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/ast/compiler/dumper.rs b/src/ast/compiler/dumper.rs index faace0f..d14147f 100644 --- a/src/ast/compiler/dumper.rs +++ b/src/ast/compiler/dumper.rs @@ -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::() { + if let Value::Object(obj) = v + && let Some(closure) = obj.as_any().downcast_ref::() + { 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), diff --git a/src/ast/compiler/lambda_collector.rs b/src/ast/compiler/lambda_collector.rs index 6cf4e0a..870c5b0 100644 --- a/src/ast/compiler/lambda_collector.rs +++ b/src/ast/compiler/lambda_collector.rs @@ -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); } diff --git a/src/ast/environment.rs b/src/ast/environment.rs index f7ee9f2..6a97929 100644 --- a/src/ast/environment.rs +++ b/src/ast/environment.rs @@ -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::() { - // Execute the script body - return vm.run(&closure.function_node); - } + if let Value::Object(obj) = &result + && let Some(closure) = obj.as_any().downcast_ref::() + { + // 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::() { - 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::() + { + result = vm.run_with_observer(&mut observer, &closure.function_node); } Ok((result, observer.logs))