mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-15 08:10:17 +02:00
primitive-eval takes expanded, not memoized, source
* module/ice-9/eval.scm (primitive-eval): * libguile/eval.c (scm_c_primitive_eval): Don't expect a memoized expression -- expect either raw source or an *expanded* expression. We handle memoization ourselves. * libguile/expand.c (scm_macroexpand): Settle down into its proper name, "macroexpand", even as we comment that it is but a fleeting boot expander. (scm_macroexpanded_p): New predicate for expanded code. * libguile/expand.h: Add scm_macroexpanded_p. * libguile/memoize.c (scm_memoize_expression): Require that the expression be expanded. (scm_init_memoize): Don't alias memoize-expression to macroexpand. * module/ice-9/psyntax-pp.scm: * module/ice-9/psyntax.scm: Always produce macroexpanded expressions, and hand them to primitive-eval. No more calls to memoize-expression here. * test-suite/tests/optargs.test: Remove some tests, as unfortunately we have no way to invoke the boot expander after boot.
This commit is contained in:
parent
3e5ea35c2f
commit
a310a1d12e
8 changed files with 1485 additions and 1516 deletions
|
@ -404,8 +404,7 @@ SCM_DEFINE (scm_memoize_expression, "memoize-expression", 1, 0, 0,
|
|||
"Memoize the expression @var{exp}.")
|
||||
#define FUNC_NAME s_scm_memoize_expression
|
||||
{
|
||||
if (!SCM_EXPANDED_P (exp))
|
||||
exp = scm_macroexpand (exp);
|
||||
SCM_ASSERT_TYPE (SCM_EXPANDED_P (exp), exp, 1, FUNC_NAME, "expanded");
|
||||
return memoize (exp, scm_current_module ());
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
@ -803,8 +802,6 @@ scm_init_memoize ()
|
|||
|
||||
#include "libguile/memoize.x"
|
||||
|
||||
scm_c_define ("macroexpand",
|
||||
scm_variable_ref (scm_c_lookup ("memoize-expression")));
|
||||
list_of_guile = scm_list_1 (scm_from_locale_symbol ("guile"));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue