summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-09-07 23:13:52 +0200
committerAndy Wingo <wingo@pobox.com>2008-09-07 23:13:52 +0200
commit6c289afe76e9910a626f135f8a008cb39f4cb861 (patch)
tree3c798e786ef07feb59612b68b0b97d302dc93db2
parent3633ff4e952fd3fcb2c0375194d8c34e930867f3 (diff)
downloadguile-6c289afe76e9910a626f135f8a008cb39f4cb861.tar.gz
macro-transformer recognizes compiled macros
* libguile/macros.c (macro-transformer): Recognize compiled as well as interpreted transformer procedures.
-rw-r--r--libguile/macros.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libguile/macros.c b/libguile/macros.c
index 48286d890..03d366278 100644
--- a/libguile/macros.c
+++ b/libguile/macros.c
@@ -221,9 +221,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