* libguile/tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Sat, 11 Oct 2003 00:57:25 +0000 (00:57 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Sat, 11 Oct 2003 00:57:25 +0000 (00:57 +0000)
commit2a6f7afe04884f562b343a82033c381fe859bd03
tree837518eefdc74cec1ddac9fb54f39e402e2024cb
parente6729603c0f9a1511aaf32001e808b5f97009176
* libguile/tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.

* libguile/print.c (scm_isymnames): Add names for the new memoizer
        codes.

* libguile/eval.c (s_missing_clauses, s_bad_case_clause,
s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
literal_p): New static identifiers.

(scm_m_case): Use ASSERT_SYNTAX to signal syntax errors.  Be more
specific about the kind of error that was detected.  Check for
duplicate case labels.  Handle bound 'else.  Avoid unnecessary
consing when creating the memoized code.

(scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
the syntactic keyword 'else.

* test-suite/tests/syntax.test (exception:bad-expression,
exception:missing-clauses, exception:bad-case-clause,
exception:extra-case-clause, exception:bad-case-labels): New.

Added some tests and adapted tests for 'case' to the new way of
error reporting.
libguile/ChangeLog
libguile/eval.c
libguile/print.c
libguile/tags.h
test-suite/ChangeLog
test-suite/tests/syntax.test