* libguile/eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Sat, 18 Oct 2003 12:07:39 +0000 (12:07 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Sat, 18 Oct 2003 12:07:39 +0000 (12:07 +0000)
commitd6754c2398030aea59dc7b1e1a4ceb99157fd829
tree9a590e6730fa7bfdfe9a4ac8b384f98e223858b6
parent2ec8656041167d96d3fda3302210df619d8826aa
* libguile/eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
scm_m_expand_body, check_bindings): Extracted syntax checking of
bindings to new static function check_bindings.

(scm_m_let, memoize_named_let): Extracted handling of named let to
new static function memoize_named_let.

(transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
ASSERT_SYNTAX to signal syntax errors.  Be more specific about the
kind of error that was detected.  Avoid use of SCM_CDRLOC.  Avoid
unnecessary consing when creating the memoized code.

* test-suite/lib.scm (exception:bad-variable): New.

* test-suite/tests/syntax.test (exception:bad-binding,
exception:duplicate-binding): New.

(exception:duplicate-bindings): Removed.

Adapted tests for 'let', 'let*' and 'letrec' to the new way of
error reporting.
libguile/ChangeLog
libguile/eval.c
test-suite/ChangeLog
test-suite/lib.scm
test-suite/tests/syntax.test