1
// Debug test for macro expansion
2

            
3
use nomiscript::{
4
    Reader, eval_program,
5
    runtime::{SymbolTable, Value},
6
};
7

            
8
2
fn eval_expr(code: &str) -> Result<Value, nomiscript::Error> {
9
2
    let program = Reader::parse(code)?;
10
2
    let mut symbols = SymbolTable::with_builtins();
11
2
    eval_program(&mut symbols, &program)
12
2
}
13

            
14
#[test]
15
1
fn debug_mapcar_expansion() {
16
1
    let symbols = SymbolTable::with_builtins();
17

            
18
    // Get the MAPCAR macro and examine it
19
1
    if let Some(mapcar_symbol) = symbols.lookup("MAPCAR")
20
1
        && let Some(nomiscript::Expr::Lambda(params, body)) = mapcar_symbol.function()
21
1
    {
22
1
        println!("MAPCAR params: {params:?}");
23
1
        println!("MAPCAR body: {body:?}");
24
1
    }
25

            
26
    // Test macro expansion directly
27
1
    let result = eval_expr("(MACROEXPAND-1 '(mapcar '+ '(1 2 3)))");
28
1
    match &result {
29
        Err(e) => println!("Expansion Error: {e:?}"),
30
1
        Ok(v) => println!("Expansion Result: {v:?}"),
31
    }
32

            
33
    // Test the actual call
34
1
    let result = eval_expr("(mapcar '+ '(1 2 3))");
35
1
    match &result {
36
        Err(e) => println!("Call Error: {e:?}"),
37
1
        Ok(v) => println!("Call Result: {v:?}"),
38
    }
39
1
}