diff options
-rw-r--r-- | NEWS | 12 | ||||
-rw-r--r-- | libguile/ChangeLog | 10 | ||||
-rw-r--r-- | libguile/eval.c | 5 | ||||
-rw-r--r-- | libguile/macros.c | 19 | ||||
-rw-r--r-- | libguile/macros.h | 7 |
5 files changed, 47 insertions, 6 deletions
@@ -95,6 +95,12 @@ when evaluated and simply be ignored in a definition context. Use `substring-move!' instead. +** Deprecated: procedure->macro + +Change your code to use either procedure->memoizing-macro or, probably better, +to use r5rs macros. Also, be aware that macro expansion will not be done +during evaluation, but prior to evaluation. + * Changes to the C interface ** The struct scm_cell has been renamed to scm_t_cell @@ -159,6 +165,12 @@ instead. Use scm_c_source_property_breakpoint_p instead. +** Deprecated: scm_makmacro + +Change your code to use either scm_makmmacro or, probably better, to use r5rs +macros. Also, be aware that macro expansion will not be done during +evaluation, but prior to evaluation. + ** Removed from scm_root_state: def_inp, def_outp, def_errp, together with corresponding macros scm_def_inp, scm_def_outp and scm_def_errp. These were undocumented and unused copies of the standard ports at the diff --git a/libguile/ChangeLog b/libguile/ChangeLog index a7b81f2c2..5d3375721 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,13 @@ +2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de> + + * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro, + scm_sym_macro, scm_macro_type), macros.h (scm_makmacro): + Deprecated the special kind of built-in dynamic syntax transformer + that was inaccurately named "macro". Note: The built-in syntax + transformers that are named "mmacro" or "memoizing-macro" still + exist, and it is these which come much closer to what one would + call a macro. + 2002-07-13 Neil Jerram <neil@ossau.uklinux.net> * eval.c (unmemocopy): Fix for diff --git a/libguile/eval.c b/libguile/eval.c index 68e0b78e6..8a07bfeb1 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -2290,8 +2290,7 @@ dispatch: SCM variable = SCM_CAR (x); if (SCM_ILOCP (variable)) location = scm_ilookup (variable, env); - else - if (SCM_VARIABLEP (variable)) + else if (SCM_VARIABLEP (variable)) location = SCM_VARIABLE_LOC (variable); else /* (SCM_SYMBOLP (variable)) is known to be true */ location = scm_lookupcar (x, env, 1); @@ -2754,6 +2753,7 @@ dispatch: SCM_ALLOW_INTS; PREP_APPLY (SCM_UNDEFINED, SCM_EOL); goto loop; +#if SCM_ENABLE_DEPRECATED == 1 case 1: x = arg1; if (SCM_NIMP (x)) @@ -2763,6 +2763,7 @@ dispatch: } else RETURN (arg1); +#endif case 0: RETURN (arg1); } diff --git a/libguile/macros.c b/libguile/macros.c index 590010a0e..467de2c02 100644 --- a/libguile/macros.c +++ b/libguile/macros.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -72,8 +72,10 @@ macro_print (SCM macro, SCM port, scm_print_state *pstate) if (SCM_MACRO_TYPE (macro) == 0) scm_puts ("syntax", port); - else if (SCM_MACRO_TYPE (macro) == 1) +#if SCM_ENABLE_DEPRECATED == 1 + if (SCM_MACRO_TYPE (macro) == 1) scm_puts ("macro", port); +#endif if (SCM_MACRO_TYPE (macro) == 2) scm_puts ("macro!", port); scm_putc (' ', port); @@ -110,6 +112,8 @@ SCM_DEFINE (scm_makacro, "procedure->syntax", 1, 0, 0, #undef FUNC_NAME +#if SCM_ENABLE_DEPRECATED == 1 + SCM_DEFINE (scm_makmacro, "procedure->macro", 1, 0, 0, (SCM code), "Return a @dfn{macro} which, when a symbol defined to this value\n" @@ -125,11 +129,18 @@ SCM_DEFINE (scm_makmacro, "procedure->macro", 1, 0, 0, "@end lisp") #define FUNC_NAME s_scm_makmacro { + scm_c_issue_deprecation_warning + ("The function procedure->macro is deprecated, and so are" + " non-memoizing macros in general. Use memoizing macros" + " or r5rs macros instead."); + SCM_VALIDATE_PROC (1,code); SCM_RETURN_NEWSMOB (scm_tc16_macro | (1L << 16), SCM_UNPACK (code)); } #undef FUNC_NAME +#endif + SCM_DEFINE (scm_makmmacro, "procedure->memoizing-macro", 1, 0, 0, (SCM code), @@ -161,7 +172,9 @@ SCM_DEFINE (scm_macro_p, "macro?", 1, 0, 0, SCM_SYMBOL (scm_sym_syntax, "syntax"); +#if SCM_ENABLE_DEPRECATED == 1 SCM_SYMBOL (scm_sym_macro, "macro"); +#endif SCM_SYMBOL (scm_sym_mmacro, "macro!"); SCM_DEFINE (scm_macro_type, "macro-type", 1, 0, 0, @@ -178,7 +191,9 @@ SCM_DEFINE (scm_macro_type, "macro-type", 1, 0, 0, switch (SCM_MACRO_TYPE (m)) { case 0: return scm_sym_syntax; +#if SCM_ENABLE_DEPRECATED == 1 case 1: return scm_sym_macro; +#endif case 2: return scm_sym_mmacro; default: scm_wrong_type_arg (FUNC_NAME, 1, m); } diff --git a/libguile/macros.h b/libguile/macros.h index 05f86ca9a..b41d4f234 100644 --- a/libguile/macros.h +++ b/libguile/macros.h @@ -3,7 +3,7 @@ #ifndef SCM_MACROS_H #define SCM_MACROS_H -/* Copyright (C) 1998,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1998,2000,2001,2002 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -60,7 +60,6 @@ SCM_API scm_t_bits scm_tc16_macro; SCM_API SCM scm_makacro (SCM code); -SCM_API SCM scm_makmacro (SCM code); SCM_API SCM scm_makmmacro (SCM code); SCM_API SCM scm_macro_p (SCM obj); SCM_API SCM scm_macro_type (SCM m); @@ -71,6 +70,10 @@ SCM_API SCM scm_make_synt (const char *name, SCM (*fcn) ()); SCM_API void scm_init_macros (void); +#if SCM_ENABLE_DEPRECATED == 1 +SCM_API SCM scm_makmacro (SCM code); +#endif + #endif /* SCM_MACROS_H */ /* |