* libguile/eval.c (s_extra_expression, s_misplaced_else_clause,
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Sat, 11 Oct 2003 10:40:19 +0000 (10:40 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Sat, 11 Oct 2003 10:40:19 +0000 (10:40 +0000)
commit609a8b86ae299e8d8d1fb9c4916bafe229ab0564
treeb2c67a42b21c9aa508ac426334d460fbdf98495a
parent58a2510b07d9f9154544478e7b0a2bd1971a3c0c
* libguile/eval.c (s_extra_expression, s_misplaced_else_clause,
s_bad_cond_clause, s_missing_recipient): New static identifiers.

(s_extra_case_clause): Removed.

(scm_m_case, scm_m_cond): If a clause appears after an else
clause, report a misplaced else clause.

(scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors.  Be more
specific about the kind of error that was detected.  Handle bound
'else and '=>.  Avoid unnecessary consing when creating the
memoized code.

(scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
the syntactic keyword 'else and SCM_IM_ARROW to memoize the
syntactic keyword '=>.

* test-suite/tests/syntax.test (exception:misplaced-else-clause,
exception:bad-cond-clause): New.

(exception:bad/missing-clauses, exception:extra-case-clause):
Removed.

Adapted tests for 'case' and 'cond' to the new way of error
reporting.

The tests that check if cond is hygienic pass now.
libguile/ChangeLog
libguile/eval.c
test-suite/ChangeLog
test-suite/tests/syntax.test