compare is allowed to take non-symbol values
This commit is contained in:
parent
a159e52ae6
commit
57253f9a6c
12
src/macro.c
12
src/macro.c
|
@ -675,16 +675,18 @@ er_macro_rename(pic_state *pic)
|
||||||
static pic_value
|
static pic_value
|
||||||
er_macro_compare(pic_state *pic)
|
er_macro_compare(pic_state *pic)
|
||||||
{
|
{
|
||||||
pic_sym x, y;
|
|
||||||
struct pic_senv *use_env;
|
|
||||||
pic_value a, b;
|
pic_value a, b;
|
||||||
|
struct pic_senv *use_env;
|
||||||
|
|
||||||
pic_get_args(pic, "mm", &x, &y);
|
pic_get_args(pic, "oo", &a, &b);
|
||||||
|
|
||||||
|
if (! pic_symbol_p(a) || ! pic_symbol_p(b))
|
||||||
|
return pic_false_value(); /* should be an error? */
|
||||||
|
|
||||||
use_env = pic_senv_ptr(pic_proc_cv_ref(pic, pic_get_proc(pic), 0));
|
use_env = pic_senv_ptr(pic_proc_cv_ref(pic, pic_get_proc(pic), 0));
|
||||||
|
|
||||||
a = macroexpand(pic, pic_symbol_value(x), use_env);
|
a = macroexpand(pic, a, use_env);
|
||||||
b = macroexpand(pic, pic_symbol_value(y), use_env);
|
b = macroexpand(pic, b, use_env);
|
||||||
|
|
||||||
return pic_bool_value(pic_eq_p(a, b));
|
return pic_bool_value(pic_eq_p(a, b));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue