From 62b7c1a0f95ead14752b8278a7b9d4f6b75e9875 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Wed, 17 Jun 2015 00:11:02 +0900 Subject: [PATCH] warn macro redefinition only when transformer object slot is being overwritten --- extlib/benz/codegen.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extlib/benz/codegen.c b/extlib/benz/codegen.c index 371b0ee8..8052873f 100644 --- a/extlib/benz/codegen.c +++ b/extlib/benz/codegen.c @@ -51,6 +51,9 @@ resolve(pic_state *pic, pic_value var, struct pic_env *env) static void define_macro(pic_state *pic, pic_sym *uid, struct pic_proc *mac) { + if (pic_dict_has(pic, pic->macros, uid)) { + pic_warnf(pic, "redefining syntax variable: ~s", pic_obj_value(uid)); + } pic_dict_set(pic, pic->macros, uid, pic_obj_value(mac)); } @@ -209,8 +212,6 @@ expand_defmacro(pic_state *pic, pic_value expr, struct pic_env *env) } if ((uid = pic_find_variable(pic, env, var)) == NULL) { uid = pic_add_variable(pic, env, var); - } else { - pic_warnf(pic, "redefining syntax variable: ~s", var); } val = pic_cadr(pic, pic_cdr(pic, expr));