diff options
author | Ludovic Courtès <ludo@gnu.org> | 2009-03-22 15:28:35 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2009-03-22 15:28:35 +0100 |
commit | d9e59f894e1b41958203ddda7f21f4817cfcfe37 (patch) | |
tree | f0d6b0b38ed000aabf327dba4e281c37c60f92a5 /libguile/macros.c | |
parent | f307fbcec2cbaaa95b8c861395133b519c7519cf (diff) | |
parent | 80540f391498ebb0f955db2fafb6a36ed03b7886 (diff) | |
download | guile-d9e59f894e1b41958203ddda7f21f4817cfcfe37.tar.gz |
Merge branch 'master' into boehm-demers-weiser-gc
Conflicts:
libguile/continuations.c
libguile/gc-freelist.c
libguile/gc-mark.c
libguile/symbols.c
libguile/threads.c
module/ice-9/boot-9.scm
Diffstat (limited to 'libguile/macros.c')
-rw-r--r-- | libguile/macros.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libguile/macros.c b/libguile/macros.c index e8899f5a0..076b72dbb 100644 --- a/libguile/macros.c +++ b/libguile/macros.c @@ -31,6 +31,7 @@ #include "libguile/deprecation.h" #include "libguile/validate.h" +#include "libguile/programs.h" #include "libguile/macros.h" #include "libguile/private-options.h" @@ -47,7 +48,7 @@ macro_print (SCM macro, SCM port, scm_print_state *pstate) || scm_is_false (scm_printer_apply (SCM_PRINT_CLOSURE, macro, port, pstate))) { - if (!SCM_CLOSUREP (code)) + if (!SCM_CLOSUREP (code) && !SCM_PROGRAM_P (code)) scm_puts ("#<primitive-", port); else scm_puts ("#<", port); @@ -223,9 +224,15 @@ SCM_DEFINE (scm_macro_transformer, "macro-transformer", 1, 0, 0, "Return the transformer of the macro @var{m}.") #define FUNC_NAME s_scm_macro_transformer { + SCM data; + SCM_VALIDATE_SMOB (1, m, macro); - return ((SCM_CLOSUREP (SCM_PACK (SCM_SMOB_DATA (m)))) ? - SCM_PACK(SCM_SMOB_DATA (m)) : SCM_BOOL_F); + data = SCM_PACK (SCM_SMOB_DATA (m)); + + if (SCM_CLOSUREP (data) || SCM_PROGRAM_P (data)) + return data; + else + return SCM_BOOL_F; } #undef FUNC_NAME |