1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-18 17:50:29 +02:00

Assignment conversion in the interpreter

* libguile/expand.c (compute_assigned, convert_assignment)
  (scm_convert_assignment): New functions.

* libguile/expand.h: Declare scm_convert_assignment.

* libguile/memoize.c (scm_memoize_expression): Do assignment conversion
  before memoization.

* test-suite/tests/syntax.test ("letrec"): Detection of unbound letrec
  variables now works.
This commit is contained in:
Andy Wingo 2014-12-04 15:07:01 +01:00
parent 3f826e3c9e
commit 7974c57937
4 changed files with 414 additions and 22 deletions

View file

@ -569,7 +569,7 @@ SCM_DEFINE (scm_memoize_expression, "memoize-expression", 1, 0, 0,
#define FUNC_NAME s_scm_memoize_expression
{
SCM_ASSERT_TYPE (SCM_EXPANDED_P (exp), exp, 1, FUNC_NAME, "expanded");
return memoize (exp, SCM_BOOL_F);
return memoize (scm_convert_assignment (exp), SCM_BOOL_F);
}
#undef FUNC_NAME