Lines
90.91 %
Functions
100 %
Branches
// Debug test for macro expansion
use nomiscript::{
Reader, eval_program,
runtime::{SymbolTable, Value},
};
fn eval_expr(code: &str) -> Result<Value, nomiscript::Error> {
let program = Reader::parse(code)?;
let mut symbols = SymbolTable::with_builtins();
eval_program(&mut symbols, &program)
}
#[test]
fn debug_mapcar_expansion() {
let symbols = SymbolTable::with_builtins();
// Get the MAPCAR macro and examine it
if let Some(mapcar_symbol) = symbols.lookup("MAPCAR")
&& let Some(nomiscript::Expr::Lambda(params, body)) = mapcar_symbol.function()
{
println!("MAPCAR params: {params:?}");
println!("MAPCAR body: {body:?}");
// Test macro expansion directly
let result = eval_expr("(MACROEXPAND-1 '(mapcar '+ '(1 2 3)))");
match &result {
Err(e) => println!("Expansion Error: {e:?}"),
Ok(v) => println!("Expansion Result: {v:?}"),
// Test the actual call
let result = eval_expr("(mapcar '+ '(1 2 3))");
Err(e) => println!("Call Error: {e:?}"),
Ok(v) => println!("Call Result: {v:?}"),